Я знаю, що я не повинен мутувати вхід і повинен клонувати об'єкт, щоб його мутувати. Я дотримувався конвенції, застосованої у проекті редукційного старту, який використовував:
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()
})
але це мутація об'єкта вхідного стану - це заборонено, навіть якщо я повертаю новий об'єкт?
items: [...state.items.slice(0, action.payload.value), ...state.items.slice(action.payload.value + 1 )]
тепер використовуйте фрагмент замість сплайсу, щоб не мутувати вхід - це шлях, чи є більш стислий шлях?