So che non dovrei mutare l'input e dovrei clonare l'oggetto per mutarlo. Stavo seguendo la convenzione utilizzata su un progetto redux di avviamento che ha usato:È questo il modo corretto di cancellare un oggetto usando redux?
ADD_ITEM: (state, action) => ({
...state,
items: [...state.items, action.payload.value],
lastUpdated: action.payload.date
})
per l'aggiunta di una voce - ho l'uso di diffusione per aggiungere l'elemento della matrice.
per la cancellazione ho usato:
DELETE_ITEM: (state, action) => ({
...state,
items: [...state.items.splice(0, action.payload), ...state.items.splice(1)],
lastUpdated: Date.now()
})
ma questo sta mutando l'oggetto stato di input - è questo vietato anche se sto tornando un nuovo oggetto?
domanda veloce. Splice restituisce gli oggetti che hai rimosso. È questa la tua intenzione? Se no dovresti usare slice, che si attiene anche alla legge sulle mutazioni. – m0meni
Bene in questo esempio sto unendo le due sezioni dell'array in un nuovo array - con l'elemento che volevo rimuovere lasciato fuori. Slice restituisce anche l'elemento rimosso giusto? Solo lo fa senza mutare la matrice originale in modo che sarebbe l'approccio migliore? – Carlo
@ AR7 come da suggerimento: 'articoli: [... state.items.slice (0, action.payload.value), ... state.items.slice (action.payload.value + 1)]' ora usa slice invece di splicing in modo da non mutare l'input - è questa la strada da percorrere o c'è un modo più conciso? – Carlo