Wiem, że nie powinienem modyfikować danych wejściowych i powinienem sklonować obiekt, aby go zmutować. Postępowałem zgodnie z konwencją stosowaną w projekcie startowym Redux, w której zastosowano:
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
za dodanie pozycji - uzyskuję użycie spreadu, aby dołączyć pozycję do tablicy.
do usunięcia użyłem:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
ale to jest mutacja obiektu stanu wejściowego - czy jest to zabronione, mimo że zwracam nowy obiekt?
items: [...state.items.slice(0, action.payload.value), ...state.items.slice(action.payload.value + 1 )]
użyj teraz plastra zamiast łączenia, aby nie modyfikować wejścia - czy to jest droga, czy jest bardziej zwięzła droga?