React native React导航和Redux:goBack()不';不要刷新我的道具

React native React导航和Redux:goBack()不';不要刷新我的道具,react-native,react-redux,redux-thunk,react-navigation,React Native,React Redux,Redux Thunk,React Navigation,这是一个React本地项目,包括React导航和Redux。 我有两个场景,第一个包含一个ListView和一个按钮,用于向列表中添加新元素。这个按钮导航到一个新的场景,在那里我填写了一个小表单来创建一个新的记录,它将出现在第一个场景的列表中 单击“保存”按钮并返回第一个场景(列表视图)时,mapStateToProps会反映更改,但不会调用其他生命周期方法(componentWillReceiveProps、shouldComponentUpdate等),它们都不会被调用 现在,两个场景都使用

这是一个React本地项目,包括React导航和Redux。 我有两个场景,第一个包含一个ListView和一个按钮,用于向列表中添加新元素。这个按钮导航到一个新的场景,在那里我填写了一个小表单来创建一个新的记录,它将出现在第一个场景的列表中

单击“保存”按钮并返回第一个场景(列表视图)时,mapStateToProps会反映更改,但不会调用其他生命周期方法(componentWillReceiveProps、shouldComponentUpdate等),它们都不会被调用


现在,两个场景都使用了connect from redux,我将使用React Navigation中的goBack()方法从场景2返回到场景1。我想知道在显示新视图时,redux get是否与视图“断开”,以及如何将其连接回来?同样,ListView场景中的MapStateTrops显示更新的数据,但似乎没有映射任何道具。

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

由于我的道具状态似乎是使用数组,因此在我的操作中复制数组而不是在同一个数组上操作时,我会得到一些更改……您能分享解决方案吗?我在@FrancisRodrigues这里也有同样的问题,似乎为了让redux捕捉到这种变化,您需要分配一个新的数组。在同一阵列上操作时,您只需传递阵列内存位置。需要做的是使用数组的copy函数来创建一个新的数组,因此,当分配这个新数组时,redux会检测它,就像一个值被更改一样。基本上,在“创建元素”视图中,只需创建列表的新副本,将新元素添加到该新数组并将其发送到reducer。对于存储中的所有更新,如果要更改数组或对象,则必须使用更新的副本创建、更新和重新分配新副本,以使所有道具使用新值刷新。如果这是一个平面变量而不是数组或对象,只需重新指定新值就足够了