【问题标题】:React Navigation and Redux: goBack() doesn't refresh my propsReact Navigation 和 Redux:goBack() 不会刷新我的 props
【发布时间】:2017-11-04 00:35:41
【问题描述】:

这是一个包含 React Navigation 和 Redux 的 React Native 项目。 我有两个场景,第一个包含一个 ListView 和一个用于向列表添加新元素的 Button。这个按钮导航到一个新场景,我在其中填写了一个小表格来创建一条新记录,该记录将出现在第一个场景的列表中。

当点击保存按钮并返回第一个场景(列表视图)时,mapStateToProps 反映了更改,但没有调用其他生命周期方法(componentWillReceiveProps、shouldComponentUpdate 等),没有一个。

现在,两个场景都使用来自 redux 的连接,我将使用 React Navigation 中的 goBack() 方法从场景 2 回到场景 1。我想知道当显示一个新视图时,redux 是否会从视图中“断开”,我该如何将它连接回来?同样,ListView 场景中的 mapStateToProps 显示数据已更新,但似乎没有映射任何道具。

【问题讨论】:

  • 由于我要支持的状态似乎正在使用一个数组,因此在我的操作中复制数组而不是对同一个操作进行操作时,我得到了一些更改...

标签: react-native react-redux redux-thunk react-navigation


【解决方案1】:

如果 redux 状态值没有真正改变,似乎 props 不会刷新。在修改之前复制列表数组,然后将其分配给有效负载似乎可以解决问题。

【讨论】:

  • 您能分享一下解决方案吗?我这里有同样的问题github.com/react-navigation/react-navigation/issues/…
  • @FrancisRodrigues 似乎要让 redux 捕捉到这种变化,您需要分配一个新数组。在同一个数组上操作时,您只是传递数组内存位置。需要做的是使用数组的复制功能创建一个新数组,因此,在分配这个新数组时,redux 将其检测为值作为更改。基本上,在您的“创建元素”视图中,只需创建列表的新副本,将新元素添加到该新数组并将其发送到您的减速器。
  • 对于存储中的所有更新,如果您要更改数组或对象,则必须使用更新的副本创建、更新和重新分配新副本,以使所有道具都以新值刷新。如果这是一个平面变量而不是数组或对象,只需重新分配新值就足够了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 2019-09-11
  • 1970-01-01
  • 2020-06-11
  • 2022-06-12
  • 2021-10-09
  • 2020-08-28
相关资源
最近更新 更多