Проблема, с которой вы сталкиваетесь, заключается в том, что setState
является асинхронным и что оно устанавливает состояние не сразу, а после небольшой задержки. Существует несколько причин, по которым React делает это, но одна из них заключается в том, что он позволяет React сгруппировать несколько изменений состояния и затем повторно визуализировать ваш компонент вместо повторного рендеринга при каждом вызове setState.
Если вы хотите использовать состояние после установки состояния, вы можете использовать второй аргумент setState
, например:
handleSubmit(e) {
this.setState({ myArray: this.state.message }, () => {
console.log("handleSubmit: " + this.state.myArray);
});
}
Подробнее о setState можно узнать здесь. Хотя эта проблема Github, вероятно, более глубока, чем вы ищете.
В вашем примере выше, возможно, стоит поместить console.log(this.state)
в вашу функцию render
, так как она всегда должна иметь больше всего современное состояние.