Je me demande si vous pourriez m'aider avec ce problème si possible. J'essaie de supprimer un élément de l'état Redux. J'ai transmis l'identifiant de l'élément sur lequel l'utilisateur a cliqué via action.data
dans le réducteur.
Je me demande comment je peux associer le action.data
à l'un des ID dans l'état Redux, puis supprimer cet objet du tableau? Je me demande également quel est le meilleur moyen de définir le nouvel état après la suppression de l'objet individuel.
Veuillez consulter le code ci-dessous:
export const commentList = (state, action) => {
switch (action.type) {
case 'ADD_COMMENT':
let newComment = { comment: action.data, id: +new Date };
return state.concat([newComment]);
case 'DELETE_COMMENT':
let commentId = action.data;
default:
return state || [];
}
}
Il suffit de filtrer les commentaires:
case 'DELETE_COMMENT':
const commentId = action.data;
return state.filter(comment => comment.id !== commentId);
De cette façon, vous ne muterez pas le tableau state
d'origine, mais vous renverrez un nouveau tableau sans l'élément, qui avait l'identifiant commentId
.
Pour être plus concis:
case 'DELETE_COMMENT':
return state.filter(({ id }) => id !== action.data);
Vous pouvez utiliser Object.assign(target, ...sources)
et répartir tous les éléments ne correspondant pas à l'ID d'action.
case "REMOVE_ITEM": {
return Object.assign({}, state, {
items: [...state.items.filter(item => item.id !== action.id)],
});
}