javascript - 如何在嵌套的 javascript 对象上使用扩展运算符?

标签 javascript reactjs object redux spread

我正在尝试更新我的部分 redux 状态,其中包含嵌套在另一个对象中的两个对象。通常在不可变地更新 javascript 对象时,我会使用扩展运算符,然后按如下方式定义任何更改:

state = {...state, property1: newvalue} 

但是,当我有嵌套对象时,我不确定如何使用扩展运算符。这是相关代码和我的尝试:

const squadDatabase = {currentSquad: {
    0: null,
    1: null,
    2:null

    }, newAdditions: null}

export default (state=initial_squad, action)=>{

    switch(action.type){
        case ADD_PLAYER_TO_SQUAD:
            return {...state, currentSquad[action.payload.currentSquadMemberId]:action.payload.newSquadAdditionId, newAdditions: action.payload.newSquadAdditionId}
        default:
            return initial_squad
    }
}

有没有人知道如何不可变地更新嵌套的 javascript 对象,使用扩展运算符或其他方式?

最佳答案

基本上你必须添加第二级对象(状态)解构。

return {
   ...state, // first nesting level spread
   currentSquad: {
      ...this.state.currentSquad, // second nesting level spread
      currentSquad[action.payload.currentSquadMemberId]: action.payload.newSquadAdditionId, 
   },
   newAdditions: action.payload.newSquadAdditionId,
};

关于javascript - 如何在嵌套的 javascript 对象上使用扩展运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58943693/

相关文章:

javascript - jQuery 动画代码只运行第一条指令?

javascript - tinyMCE 头部样式

javascript - 访问另一个对象内的对象返回无法读取未定义的属性

javascript - 基于 mapStateToProps 输出重新渲染 connect()ed 组件

c# - 在一个类中定义 MySqlConnection 并在另一个类中使用它来处理数据库

c# - 我怎么知道一个类是否可以用作静态类?

javascript - 更改 Canvas 上图像的颜色/色调的最佳方法是什么?

javascript - Typescript:将*一些*(不是全部)属性从一个类实例复制到另一个对象的最佳方法是什么?

reactjs - 我想将 react devtools 添加到 Safari 浏览器

object - customobject 和 psobject 之间的区别?