2
votes

Supprimer l'élément de l'objet par clé

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],
});


1 commentaires

Essayez de supprimer todos [id]; d'abord, puis effectuez un setState


3 Réponses :


4
votes

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)];
});


0 commentaires


0
votes

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.


0 commentaires