是在Redux减少器中使用多种ramda的assocPath方法的方法吗?

问题描述 投票:0回答:1

因此想知道是否有什么办法可以在redux reducer中使用多个assocPath方法。我想做的是在我的redux reducer中更新对象和数组的状态,而无需对其进行突变。为此,我必须在多个对象/数组中设置一个值。我尝试执行此操作的方法是通过创建对象的克隆并更新它,然后再次将其设置为状态,这是我在组件状态下所做的。因此,目前我正在组件状态下执行此类操作。我希望在redux reducer中做类似的事情

 let newState;
    newState = _.assocPath(["project", "value"], project, this.state);
    newState = _.assocPath(["project", "error"], false, newState);
    this.setState(newState);

但是问题在于redux减速器,我可能无法做到。我必须一个接一个地介绍这些方法。

[如果您需要更多信息,请告诉我。谢谢

javascript reactjs redux ramda.js
1个回答
0
投票

我将创建要与原始状态合并的对象,并使用R.mergeDeepRight获取新状态。

示例

const state = { project: { value: null, error: true, other: 'other' } }
const project = {}

const newState = (R.mergeDeepRight(state, {
  project: {
    value: project,
    error: false
  }
}))

console.log(newState)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.