【问题标题】:Updating and object nested array in react jsreact js中的更新和对象嵌套数组
【发布时间】:2019-08-03 10:21:39
【问题描述】:

我的当前数据结构处于我的 redux 状态

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

我想将我创建的操作的结果返回附加到消息数组的末尾而不改变它。我知道如果消息数组是状态的直接子级,我将如何实现这一点,但由于它是嵌套的,它完全让我失望。

这就是我目前得到它的方式,但我正在使用推送,并且它“感觉”不正确。

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

谢谢

【问题讨论】:

    标签: javascript reactjs react-native ecmascript-6 redux


    【解决方案1】:

    这是如何以不可变的方式做到这一点:

    const state = {
        chats : {
            id: "idhere",
            messages: [
                { 
                   obj: "here" 
                },
                { 
                   obj: "here" 
                },
            ]
        }
    }
    
    let newObj = {
    
       ...state,
       chats: {
         ...state.chats,
         messages:[...state.chats.messages, {obj:"new object"}]
       }
    
    };
    

    如果你明白了,你可以在reducer中进行调整。

    【讨论】:

    • 感谢您的回复。我明白你在那里展示了什么。然而问题是它在状态对象的聊天对象中?我将如何适应它?
    • 这看起来很完美,谢谢!关于国家的实际结构,我实际上写错了我的问题。消息键实际上是聊天 ID,但我应该能够使用您上面显示的内容来制作。谢谢!
    • 接受,再次感谢!
    猜你喜欢
    • 2019-11-02
    • 2019-10-10
    • 2021-02-06
    • 2023-01-23
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多