react-native - 更新以前的 StackNavigator 屏幕的正确方法是什么?
问题描述
示例:
假设您有一个加载了列表项的屏幕this.state.items
。
现在您有了一个按钮,可以将您导航到新屏幕。
在此屏幕上,您想将一个项目附加到该列表中。
关闭该屏幕后,您将返回原始列表项的屏幕。
实现使用新项目更新该列表的目标的最佳方法是什么?
这应该通过以下方式完成:
1. 将对象传递给新屏幕this.state
。
2.通过调用旧屏更新功能?(函数可能作为道具传递到新屏幕。)
3. 在函数中使用 StackNavigator 的道具?
4. 另一种方式?
我很感激任何帮助。
解决方案
您应该通过导航操作传递一个更新状态的回调:
this.props.navigation.navigate('NewScreen', {
addItem: item => this.setState(prevState => ({ items: prevState.items.concat([item]) })),
});
然后在新屏幕中调用它来添加一个项目:
this.props.navigation.state.params.addItem(newItem);
推荐阅读
- c++ - 在 C++ 中运行时生成 n 维数组
- javascript - 仅返回最终条件的 if/else 语句出现问题
- javascript - 如何使用文本转语音访问数组的随机元素?
- react-native - Const vs Class Functions 是 React Native
- angular - Angular Reactive Forms - ngfor 基于 promise 在 html 中设置值
- python - 如何将单个文本标签添加到 Altair 散点图中的最大点?
- c# - 如何在 C# 中制作通向另一个控制器方法的 home/index 路由?
- java - 无法在 recyclerview 上设置适配器,错误 - 无法解析“setAdapter”
- symfony - 如何修复 FOSUserBundle 提交?
- javascript - 不和谐.js | 无法找到用户连接和断开连接事件