Eu sei que não devo alterar a entrada e devo clonar o objeto para alterá-lo. Eu estava seguindo a convenção usada em um projeto redux starter que usava:
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
para adicionar um item - eu uso o spread para anexar o item ao array.
para excluir usei:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
mas isso está alterando o objeto de estado de entrada - isso é proibido, embora eu esteja retornando um novo objeto?
items: [...state.items.slice(0, action.payload.value), ...state.items.slice(action.payload.value + 1 )]
usar slice agora em vez de splice para não alterar a entrada - esse é o caminho a seguir ou existe um modo mais conciso?