我在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/