私が読んでいるフォームセクション反応jsドキュメントとonChange
使用方法を示すためにこのコードを試してみました(JSBIN ジャパン)。
var React= require('react');
var ControlledForm= React.createClass({
getInitialState: function() {
return {
value: "initial value"
};
},
handleChange: function(event) {
console.log(this.state.value);
this.setState({value: event.target.value});
console.log(this.state.value);
},
render: function() {
return (
<input type="text" value={this.state.value} onChange={this.handleChange}/>
);
}
});
React.render(
<ControlledForm/>,
document.getElementById('mount')
);
<input/>
ブラウザで値を更新すると、コールバックconsole.log
内の2 番目は最初のものとhandleChange
同じものを出力します。コールバックのスコープ内での結果が表示されないのはなぜですか?value
console.log
this.setState({value: event.target.value})
handleChange
ベストアンサー1
Reactのドキュメンテーション:
setState()
すぐには変化しませんthis.state
が、保留中の状態遷移を作成します。this.state
このメソッドを呼び出した後にアクセスすると、既存の値が返される可能性があります。呼び出しの同期操作は保証されません。setState
パフォーマンス向上のために呼び出しがバッチ処理される場合があります。
状態の変化が発生した後に関数を実行する場合は、それをコールバックとして渡します。
this.setState({value: event.target.value}, function () {
console.log(this.state.value);
});