React native 更新以前的StackNavigator屏幕的正确方法是什么?

React native 更新以前的StackNavigator屏幕的正确方法是什么?,react-native,state,React Native,State,示例: 假设您有一个屏幕,其中列表项加载到this.state.items 现在您有了一个按钮,可以将您导航到新屏幕。 在此屏幕上,您希望将项目附加到该列表中。 一旦您关闭该屏幕,您将回到屏幕,并返回原始列表项。 实现使用新项目更新该列表的目标的最佳方法是什么? 应通过以下方式完成此操作: 1.将this.state对象传递到新屏幕 2.通过调用旧屏幕上的更新函数?(功能可能作为道具传递到新屏幕。) 3.使用StackNavigator的道具输入功能? 4.另一种方式? 非常感谢您的帮助。如果将

示例
假设您有一个屏幕,其中列表项加载到
this.state.items

现在您有了一个按钮,可以将您导航到新屏幕。
在此屏幕上,您希望将项目附加到该列表中。
一旦您关闭该屏幕,您将回到屏幕,并返回原始列表项。

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

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


非常感谢您的帮助。

如果将组件状态提取到存储中,则使用状态管理库(如mobx),第二屏组件可以更新存储,并且注入此存储的所有组件都将自动更新。

如果将组件状态提取到存储中,则使用状态管理库(如mobx),第二个屏幕组件可以更新存储,注入此存储的所有组件都将自动更新。

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

this.props.navigation.navigate('NewScreen', {
  addItem: item => this.setState(prevState => ({ items: prevState.items.concat([item]) })),
});
然后在新屏幕中调用它以添加项目:

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

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

this.props.navigation.navigate('NewScreen', {
  addItem: item => this.setState(prevState => ({ items: prevState.items.concat([item]) })),
});
然后在新屏幕中调用它以添加项目:

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

有没有一种方法可以在不增加额外库或状态管理器复杂性的情况下实现这一点?有没有一种方法可以在不增加额外库或状态管理器复杂性的情况下实现这一点?这正是我想要的。谢谢,正是我想要的。非常感谢。