首页 > 解决方案 > 更新以前的 StackNavigator 屏幕的正确方法是什么?

问题描述

示例
假设您有一个加载了列表项的屏幕this.state.items
现在您有了一个按钮,可以将您导航到新屏幕。
在此屏幕上,您想将一个项目附加到该列表中。
关闭该屏幕后,您将返回原始列表项的屏幕。

实现使用新项目更新该列表的目标的最佳方法是什么?

这应该通过以下方式完成:
1. 将对象传递给新屏幕this.state
2.通过调用旧屏更新功能?(函数可能作为道具传递到新屏幕。)
3. 在函数中使用 StackNavigator 的道具?
4. 另一种方式?

我很感激任何帮助。

标签: react-nativestate

解决方案


您应该通过导航操作传递一个更新状态的回调:

this.props.navigation.navigate('NewScreen', {
  addItem: item => this.setState(prevState => ({ items: prevState.items.concat([item]) })),
});

然后在新屏幕中调用它来添加一个项目:

this.props.navigation.state.params.addItem(newItem);

推荐阅读