我在redux状态下具有当前数据结构

const state = {
    chats: {
        id: "idhere",
        messages: [
            {
               obj: "here"
            },
            {
               obj: "here"
            },
        ]
    }
}


我想将我创建的操作的返回结果附加到messages数组的末尾,而不对其进行更改。我知道如果messages数组是该状态的直接子级,但如何实现此目标,但是由于嵌套状态,它已使我完全不知所措。

这是我目前的方法,但我使用的是push,但感觉不正确。

case GET_CHAT_MESSAGES:
    return { ...state, chats: { ...state.chats[action.id].messages: ...state.chats.[action.id].messages, action.payload }}


谢谢

最佳答案

这是一成不变的方式:

const state = {
    chats : {
        id: "idhere",
        messages: [
            {
               obj: "here"
            },
            {
               obj: "here"
            },
        ]
    }
}

let newObj = {

   ...state,
   chats: {
     ...state.chats,
     messages:[...state.chats.messages, {obj:"new object"}]
   }

};


如果您有想法,可以在减速器中进行调整。

关于javascript - 在React JS中更新和对象嵌套数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55130057/

10-12 00:07
查看更多