Обновление и объект вложенного массива в реагировать JS - PullRequest
0 голосов
/ 12 марта 2019

У меня есть текущая структура данных в моем состоянии избыточности

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 }}

Спасибо

1 Ответ

3 голосов
/ 12 марта 2019

Вот как это сделать неизменным образом:

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

let newObj = {

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

};

Если у вас есть идея, вы можете адаптировать ее в редукторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...