reactjs - 反应导航,路线数据正在抛出“未定义不是对象”
问题描述
尝试使用 react-navigation 路由将数据传递到应用程序的第二页,但项目数据似乎没有正确传输。React nav to 相当新,不会怀疑它是否简单。这是代码。
数据的发送:
<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',
}
})
另外,我知道我在这里发生的愚蠢的 item.item 情况。firebase 数据嵌套有点奇怪或其他东西,所以这是让数据显示的唯一方法。不确定这是否是问题的根源,但我已经尝试了 item.title 和 item.item.title 并且两者仍然产生错误。
提前致谢!
解决方案
这个问题,
在这里,您从 onPress 传递项目,而不是从渲染中获得的项目。
所以改变这个
<TouchableOpacity onPress={(item) => navigation.navigate("DiscoverDetails", { item })} style={styles.card}>
To(去掉参数项)
<TouchableOpacity onPress={() => navigation.navigate("DiscoverDetails", { item })} style={styles.card}>
推荐阅读
- image - 无法在 Serenity 应用程序模板中实现卡片视图
- c# - .NET 5 成功使用 SOAP 服务,但标头为空,即使它们在响应中
- java - 单击后更改形状和颜色(GUI、Java)
- django - webRTC ondatachannel() 和 onopen() 事件监听器未触发
- cytoscape.js - Cytoscape GEM 文件创建未标记的方形节点而不是标记的圆形节点
- sql - 从 orderDate SQL 获取年、季
- visual-studio-code - VsCode 有线智能在单击时发出重复文本
- django - 我尝试测试但有导入测试错误,那么问题是什么?
- javascript - 我想要我的
在 CSS 中 5 秒后显示的标签
- java - 如何在 spring-boot config-server 中为 git repo 配置后备 uri