Происходит следующее: changeValue1
и changeValue2
видят состояние от рендеринга, в котором они были созданы в , поэтому, когда ваш компонент рендерит в первый раз, эти 2 функции видят:
state= {
value1: "1",
value2: "2"
}
Когда вы нажимаете на кнопку, сначала вызывается changeValue1
и, как и ожидалось, изменяется на {value1: "new1", value2: "2"}
.
Теперь, через 1 секунду, вызывается changeValue2
, но эта функциявсе еще видите начальное состояние ({value1; "1", value2: "2"}
), поэтому, когда эта функция обновляет состояние следующим образом:
setState({ ...state, value2: "new 2" });
вы в конечном итоге видите: {value1; "1", value2: "new2"}
.
источник