反应本机 - 状态不会在导航时更新



我不确定标题是否足够丰富,但我会尝试解释我的需求。

我的申请中有两堆。我有一个浮动组件,它出现在我的应用程序中的任何位置(无论我在哪个堆栈中(,显示一些项目,通过单击它们,它将导航到呈现该项目的组件。导航代码为:

navigation.navigate('Tabs', {
screen: 'Home',
params: { screen: 'Dish', params: { from: '', data: dish } },
})

现在的问题是,如果我已经在渲染该项目的屏幕Dish中,然后使用浮动组件导航到另一个项目,则我的状态不会重新渲染,并保留其旧值。

我已经设法通过将代码更改为:来解决这个问题

navigation.push('Dish', {from: '', data: dish})}

这只是将组件推入堆栈,尽管它造成了另一个问题;如果我在第二个堆栈(而不是Tab堆栈(中,那么这就不起作用,也不会在任何地方导航,这是有道理的。。

我还设法解决了这个问题,导航到Tab堆栈,然后像这样推送我的组件:

navigation.navigate('Tabs', {screen:'Home'})
navigation.push('Dish', {from: '', data: dish})}

这是有效的,尽管我不确定这是否是一个好的做法。我想知道这是否是实现我想要的正确方式。。也许我应该重新发送我的组件,这样状态就会改变?我试着尽可能少地包含代码,如果需要其他东西,我会添加它。

提前感谢!

这不是最好的解决方案,但您可以使用它:

componentDidUpdate(prevProps) {
if (this.props.route.params !== prevProps.route.params) {
//What you want to do      
}

仅当参数发生变化时才使用DidUpdate以避免无限循环。

或者照顾听众。

最新更新