Добавить элемент во вложенный массив в redux-toolkit

Redux Toolkit выдает мне ошибки мутации при попытке обновить состояние во вложенном массиве, и я думал, что он использовал immer, чтобы обойти это и упростить редукторы.

Мой магазин выглядит так:

состояние -> формы -> разделы

Я хочу добавить раздел в существующую форму.

Мое действие принимает форму и раздел

редуктор выглядит как

let intialState={
    forms:[]
}

const FormsReducer = createReducer(intialState, {
    ADD_SECTION: (state, action) => {
        const index = state.forms.findIndex(f => f.id === action.form.id);
        state.forms[index].__formSections.push(action.payload);
        },

В отправке обнаружена мутация состояния по пути: FormsReducer.forms.0.__formSections.0

Тем не менее, согласно документации redux-toolkit, должно быть возможно «написать» изменяющуюся «неизменную логику обновления» ...

Что я делаю не так и как это исправить?


person Charlie Benger-Stevenson    schedule 20.03.2020    source источник
comment
Вы случайно не догадались?   -  person Sjonchhe    schedule 12.11.2020
comment
Это все еще происходит с вами? Я знаю, что это старый вопрос, так что, возможно, это ошибка, которая была исправлена. Я не могу воспроизвести его: codesandbox.io/s/redux-toolkit-add-form-data-d91qw?file=/src/   -  person Linda Paiste    schedule 10.03.2021
comment


Ответы (1)


Если вы вернете его без изменения из редуктора, ошибка не возникнет.


const FormsReducer = createReducer(intialState, {
    ADD_SECTION: (state, action) => {
        const newstate = {...state}
        const index = newstate.forms.findIndex(f => f.id === action.form.id);
        newstate.forms[index].__formSections.push(action.payload);
        return newstate 
},
person Chetan Jain    schedule 05.05.2021