我在 react-navigation 中遇到的问题是,如果我返回,传递给子元素的道具不会改变。
https://github.com/CMarshall92/PostMate-Rest-App
例如,如果我单击ScrollView中的一个元素,它将导航到组件CollectionOverview,其中包含基于该集合获取信息所需的正确id。如果我导航回主视图并单击滚动视图中的其他元素,它将再次导航到 CollectionOverview 组件,但第一次导航转换中的 id 将出现在不正确的元素中。
我做错了什么吗?到目前为止,我在网上搜索没有成功。
主屏幕:
<ScrollView style={styles.containerList}>
{
...
onPress={() => {
navigation.navigate('CollectionOverView', {
collectionId: l.id
})
...
}
</ScrollView>
收藏概览:
this.state = {
...
collectionId: navigation.getParam('collectionId', ''),
...
}
导航到第一个集合,然后能够返回并导航到第二个项目,并将正确的导航道具传递给组件。
我发现 React 导航无法自动区分堆栈导航器中的路由。例如,如果您使用上面的代码,但是:
navigation.navigate({
routeName: `CollectionOverView${i}`,
params: { collectionId: l.id }
})
然后在堆栈导航器中添加两条路由,即。
CollectionOverView0: {
screen: CollectionOverView
},
CollectionOverView1: {
screen: CollectionOverView
},
这似乎允许您在路由之间区分数据。显然,为此添加唯一键将只允许堆栈导航中的一条路由。
navigation.navigate({
key: uuidv4(),
routeName: `CollectionOverView${i}`,
params: { collectionId: l.id }
})
CollectionOverView: {
screen: CollectionOverView
},
但由于某种原因,这对我不起作用,我不确定我做错了什么。