J'ai donc créé l'application React Todo avec un objet comme liste Todo. La suppression d'un élément par clé fonctionne avec delete , mais me ramène booléen au lieu d'Object avec le reste des éléments.
Warning: Failed prop type: Invalid prop `todos` of type `boolean` supplied to `TodoList`, expected an object.
Je reçois ceci dans la console: p>
deleteTodo = (id) => {
const { todos } = this.state;
this.setState({
todos: delete todos[id],
});
3 Réponses :
Vous devez utiliser des opérations immuables lorsque vous utilisez Redux. Vous ne devez pas changer votre état directement.
Pour cela, vous pouvez utiliser la déstructuration pour exclure votre todo des todos, si vos todos sont dans un objet:
const { todos } = this.state;
this.setState({
todos: [...todos.slice(0, id), ...todos.slice(id + 1)];
});
Vous devez d'abord copier votre état dans un tableau pour en avoir un clone.
Ensuite, vous supprimez l'ID indésirable de votre nouveau tableau.
var newTodoArray = this.state;
newTodoArray.remove(id);
this.setState({
todos: newTodoArray,
});
Quelque chose comme ce qui précède.
Essayez de
supprimer todos [id];d'abord, puis effectuez unsetState