setState не обновляет состояние в обратном вызове - PullRequest
1 голос
/ 18 июня 2020

У меня есть следующий обратный вызов, связанный с onClick. Предполагается, что этот обратный вызов удалит связанную задачу из списка на основе идентификатора.

Когда я использую console.log, я могу проверить, что logi c работает, однако, когда я использую setState, он не работает.

Я также пробовал использовать функцию обратного вызова ... Я могу подтвердить, что функция обратного вызова вызывается, в частности, не работает функция setState.

Почему?

state = {
    todos: [],
    todoToShow: 'all',
  };

CALLBACK:

 handleDeleteTodo = (id) => {
    this.setState((state) => {
      return {
        todos: this.state.todos.filter((todo) => todo.id !== id) ,
      };
    });
  };

Способ рендеринга задач:


    if (this.state.todoToShow === 'all') {
      todos = this.state.todos;
    } else if (this.state.todoToShow === 'active') {
      todos = this.state.todos.filter((todo) => !todo.complete);
    } else if (this.state.todoToShow === 'complete') {
      todos = this.state.todos.filter((todo) => todo.complete);
    }

{todos &&
          todos.map((todo) => (
            <Todo
              todo={todo}
              key={todo.id}
              // id={todo.id}
              toggleComplete={() => this.toggleComplete(todo.id)}
              // text={todo.text}
              onDelete={() => this.handleDeleteTodo(todo.id)}
            />
          ))}```
...