反应导航,路由数据抛出"undefined is not an object"



试图使用react导航路线将数据传递到应用程序的第二个页面,但项目数据似乎没有正确传输。对于React nav来说,这是一个很新的东西,如果它很简单的话,我不会怀疑。这是代码。

数据的发送:

<FlatList
data={posts}
renderItem={(item) =>
<TouchableOpacity onPress={(item) => navigation.navigate("DiscoverDetails", { item })} style={styles.card}>
{/*top row */}
<View style={{ flex: 1, flexDirection: 'row' }}>
{/*this changes depending on the filter, make icon a var */}
<View style={styles.cardIconBox}></View>
{/* title and tag container */}
<View style={styles.cardTitleContainer}>
<Text style={styles.cardTitleStyle}>{item.item.title}</Text>
<Text>{item.item.tags}</Text>
</View>
</View>
{/*bottom row */}
<View style={{ flex: 1 }}>
<View style={styles.cardHorDivide} />
<View style={{ flexDirection: 'row' }}>
{/*this is the horizontal divs on the bottom */}
<View style={styles.cardBotChunk}>
<Image style={styles.clock} source={require('../assets/clock.png')} />
<Text style={styles.intStyle}>{item.item.length}</Text>
</View>
<View style={styles.vertDiv} />
<View style={styles.cardBotChunk}>
<Image style={styles.clock} source={require('../assets/user.png')} />
<Text style={styles.intStyle}>344</Text>
</View>
<View style={styles.vertDiv} />
<View style={styles.cardBotChunk}>
<Image style={styles.clock} source={require('../assets/start-black.png')} />
<Text style={styles.intStyle}>14</Text>
</View>
</View>
</View>
</TouchableOpacity>
}
/>

目的地:

import React from 'react';
import { Text, View, StyleSheet } from 'react-native';
const DiscoverDetails = ({ navigation, route }) => {
const { item } = route.params;
return (
<View style={styles.screen}>
<Text>{item.item.title}</Text>
</View>
)
}
export default DiscoverDetails;
const styles = StyleSheet.create({
screen: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
}
})

此外,我知道我在这里遇到的一些愚蠢的问题。firebase数据嵌套有点奇怪,所以这是显示数据的唯一方法。不确定这是否是问题的根源,但我已经尝试了item.title和item.item.title,但两者仍然会产生错误。

提前感谢!

这个问题,

在这里,传递来自onPress的项目,而不是从渲染中获得的项目。

所以改变这个

<TouchableOpacity onPress={(item) => navigation.navigate("DiscoverDetails", { item })} style={styles.card}>

至(删除参数项(

<TouchableOpacity onPress={() => navigation.navigate("DiscoverDetails", { item })} style={styles.card}>

相关内容

最新更新