Поскольку this.props и this.state могут обновляться асинхронно, вы не должны полагаться на их текущее значение для вычисления следующего состояния. Правильно будет использовать второй вариант вызова setState(), который принимает функцию, а не объект. Эта функция получит предыдущее состояние в качестве первого аргумента и значения пропсов непосредственно во время обновления в качестве второго аргумента.
const App = () => {
const [state, setState] = useState(0);
// используем тогда, когда нужно установить значенее, которое не зависит от state
setState(1);
setState((prevState) => {
return prevState + 1;
// мы могли б написать return state + 1,
// но тогда б мы не были б уверены, что там именно прошлый state (возможно, он еще не обновился)
});
};