问题描述
我是本机反应的新手,过去 2 天我一直遇到问题。 我一直在研究一个应用程序。其中用户搜索药物并从其余 API 获取数据并显示结果。当用户点击任何搜索项时,它会导航到另一个包含其详细信息的页面。
但是现在,问题是数据获取成功并显示了初始结果,但是当我点击它的容器以移动到详细信息页面时,它给出了一个错误。
这是父组件的代码。当页面加载时,数据从 API 中获取,然后在第一次尝试中呈现。
index.js
import React,{ useEffect,useState } from 'react';
import { StyleSheet,View,StatusBar,TouchableOpacity,ScrollView,Text } from 'react-native';
import SearchBar from './searchBar.js'
import SearchResultContainer from './searchResultContainer.js'
export default function searchResult({ route,navigation}) {
const [searchResult,setReasult] = useState([]);
const searchItem = route.params.searchItem;
useEffect(() => {
async function fetchData(){
const response = await fetch('API link',{
method: 'POST',body: JSON.stringify({
target:searchItem
})
});
const data = await response.json();
setReasult(data);
}
fetchData()
},[])
var display;
if(searchResult.length<1){
display = <View>
<Text>Medicine not found</Text>
</View>
}
else{
display = searchResult.map((each,index)=>{
return (
<TouchableOpacity key={index}
onPress={() => {
console.log('hello world');
navigation.navigate('MedicineDescription',{
searchItem:each.medicine_name
})
}}
>
<SearchResultContainer data={each} />
</TouchableOpacity>
)
})
}
return (
<View>
<StatusBar barStyle="light-content" backgroundColor="#0277bd" />
<SearchBar />
<ScrollView>
{display}
</ScrollView>
</View>
)
}
这是 touchableOpacity 中 searchResultComntainer
的代码。
searchResultContainer.js
import React from 'react';
import { StyleSheet,Text,Image } from 'react-native';
export default function searchResultContainer(props) {
const medData = props;
console.log(medData);
return (
<View style={styles.container}>
<View style={styles.imageView}>
<Image style={styles.image} source={require("../../assets/Medicine.jpg")} />
</View>
<View style={styles.detail}>
<Text style={styles.name}>{medData.medicine_name} </Text>
<Text style={styles.chemical}>{medData.category_name}</Text>
<Text style={styles.brand}> {medData.Brand_name} </Text>
</View>
</View>
)
}
上面的组件重新渲染得很好,但是当我们触摸这个组件时,它应该导航到它的描述页面,但这样做可能会重新渲染组件,甚至没有传递道具,因为我收到了一个错误
undefined is not an object evaluating (medData.medicine_name).
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)