React native - 状态不会在导航上更新

时间:2021-05-11 14:00:47

标签: react-native navigation react-navigation

我不确定标题是否提供了足够的信息,但我会尝试解释我的需求。

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

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})}

这行得通,但我不确定这是否是好的做法。我想知道这是否是实现我想要的正确方法..也许我应该让我的组件重新渲染以便状态改变?我尽量包含尽可能少的代码,如果还有其他需要,我会添加它..

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

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

     }

仅在参数更改时使用 DidUpdate 以避免无限循环。

或者照顾听者。