Почему в стейт попадает предыдущее состояние? Как правильно его обновлять?

Когда вы обновляете состояние компонента в React с использованием функции setState, React не обновляет его сразу же, а планирует обновление и запускает процесс перерисовки компонента. Внутри функции setState React объединяет новое состояние с предыдущим и использование этого предыдущего состояния может быть причиной вашей проблемы.

React предоставляет два способа правильного обновления состояния:

1. Передача функции в setState:

this.setState((prevState) => {
  return { count: prevState.count + 1 };
});

При использовании функции в setState, React гарантирует, что предыдущее состояние будет точным на момент обновления. Таким образом, вы всегда будете обновлять состояние на основе актуального предыдущего состояния.

2. Использование объекта состояния:

Если обновление состояния не зависит от предыдущего состояния, можно использовать объект состояния напрямую:

this.setState({ count: this.state.count + 1 });

Однако, при использовании этого метода, вам следует быть уверены, что не произойдет гонка за состояние и что вы всегда независимо обновляете состояние.

Используя эти методы корректно, вы сможете избежать проблем с попаданием предыдущего состояния в ваше новое состояние в React.