Реакция 16. Событие оповещения в обратном вызове setState вызывается перед выполнением графического рендеринга. - PullRequest
0 голосов
/ 28 мая 2018

Я работаю с реакцией JS 16.

var time = this.state.time;
this.setState({time: time + 1}, function(){alert("hello, time is updated");} );

, но предупреждение появляется до того, как время будет графически обновлено.

Есть идеи, как вызвать предупреждение, но ТОЛЬКО после завершения setState?(Я хочу, чтобы представление обновлялось ДО всплывающего предупреждения ...)

1 Ответ

0 голосов
/ 28 мая 2018

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

this.setState(
   (prevState) => ({time: prevState.time + 1}),
   () => {alert("hello, time is updated");}
);

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

...