javascript - 通过 ReduxReducer 中的键附加到数组访问

标签 javascript json ecmascript-6 redux react-redux

我正在尝试在 reducer 中添加我的状态。我需要访问一个键,然后添加到该键内的数组中。这就是我目前的状态:

{teamMembers: {
    PersonId1: [{ object1 }, {object2 }]
    PersonId2: [{ object3 }, { object4 }]
    PersonId3: [{ object5 }, { object6 }]
}}

我需要根据操作输入的内容访问 PersonId,然后将操作中的一项附加到数组中。理想情况下,如果键 PersonId 尚不存在,它还会创建一个新键和数组。

最佳答案

在您的 reducer 中,只需进行一些数据操作即可。请记住仅操作您状态的副本,而不是您的实际状态。

const action = {
  payload: {
    personId: 'PersonId4',
    item: {}
  }
}

const state = {
    PersonId1: [{ object1 }, {object2 }]
    PersonId2: [{ object3 }, { object4 }]
    PersonId3: [{ object5 }, { object6 }]
}
const {personId, item} = action.payload
let newState = {...state}
if (personId in newState) {
  newState[personId].push(item)
} else {
  newState[personId] = [item]
}
return newState

关于javascript - 通过 ReduxReducer 中的键附加到数组访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48776543/

相关文章:

javascript - 将字符串传递给 Django 应用程序中具有 d3.js 树的模板

arrays - Go - 如何将编码的 json 对象附加到文件

ecmascript-6 - Eslint允许测试中的无关性

javascript - 如何在没有 module.exports 的情况下在 Javascript 中导出 ES6 类

javascript - 是否可以在某些浏览器中隐藏 id 元素?

javascript - JQuery 创建元素并在单击它时执行函数

javascript - mongodb:全局将对一个ObjectID的所有引用替换为另一个ObjectID?

json - 解码编码不佳的 JSON(嵌套过多、许多可能的键、键与值混淆)

jquery - FullCalendar,事件不刷新

javascript - 使用 promise 的 redux 最佳实践