Javascript 如何更好地合并状态中的更改?

Javascript 如何更好地合并状态中的更改?,javascript,redux,Javascript,Redux,updateIActive和updateData都返回状态的新副本 我使用UpdateDautUpdateUIActiveState、action、action返回一个新版本的state,其中首先包含使用UpdateIactive更新的属性,然后是使用updateData更新的属性 我想知道是否有一种更优雅、更有效的方法。 也许使用JS carry const updateUiActive=状态,action=>{ 返回dotProp.setstate,“navigation.ui.activ

updateIActive和updateData都返回状态的新副本

我使用UpdateDautUpdateUIActiveState、action、action返回一个新版本的state,其中首先包含使用UpdateIactive更新的属性,然后是使用updateData更新的属性

我想知道是否有一种更优雅、更有效的方法。 也许使用JS carry

const updateUiActive=状态,action=>{ 返回dotProp.setstate,“navigation.ui.active”,action.payload } const updateData=状态,action=>{ const updatedata=state.navigation.data.mapx=>{ x、 isActive=x.id==action.payload 返回x } 返回dotProp.setstate“navigation.data”,updateData } 函数navigationReducer状态=初始状态,操作{ 开关动作类型{ case types.SET_激活: 返回UpdateDataUIActiveState、操作、操作 违约: 返回状态 } } 首先,redux在很大程度上依赖于不可变的状态。您不应修改它,但应返回它的新修改副本

一种选择是自己动手,ES的spread操作符通常对此非常有帮助


另一个选择是使用。开始时可能很难获得语法,但对于更复杂的状态,它可以帮助您获得更好的结构。

您可以使用动作创建者。我建议使用拆分和合并还原器。您可以发布navigationReducer的完整状态吗?在我的示例中,这两个函数都使用map和dotProp,所以它们是不可变的。这有意义吗?我明白了,你能给出一个状态和负载的例子吗?我很难想象它。