Я знаю, что я не должен мутировать входные данные и должен клонировать объект, чтобы мутировать его. Я следовал соглашению, используемому в проекте стартового стартера, который использовал:
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
для добавления элемента - я получаю использование спреда для добавления элемента в массив.
для удаления я использовал:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
но это мутирует объект входного состояния - это запрещено, хотя я возвращаю новый объект?