Sé que se supone que no debo mutar la entrada y debo clonar el objeto para mutarlo. Estaba siguiendo la convención utilizada en un proyecto de inicio redux que usaba:
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
para agregar un elemento: obtengo el uso de spread para agregar el elemento en la matriz.
para borrar utilicé:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
pero esto está mutando el objeto de estado de entrada, ¿está prohibido aunque estoy devolviendo un nuevo objeto?
items: [...state.items.slice(0, action.payload.value), ...state.items.slice(action.payload.value + 1 )]
usar cortar ahora en lugar de empalmar para no mutar la entrada: ¿es este el camino a seguir o hay una manera más concisa?