this.setState
がすぐに状態を変更するかどうかはわかりません。この例ではReactJS:this.setStateはすぐにその効果がありますか?
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
switch: false
};
this.switch = this.switch.bind(this);
}
clickCoverSwitch(){
console.log("Before clicking - ", this.state.switch);
this.setState({switch: !this.state.switch});
console.log("Now, the state is - ", this.state.switch);
}
render() {
return (
<input onClick={this.clickCoverSwitch} defaultChecked={this.state.coverSwitch} type="checkbox">
</input>
);
}
....のチェックボックスがあると仮定してみましょう、説明するために
、チェックボックスはデフォルトでオフになって - OKです。
ただし、スイッチ(チェックボックス)をクリックすると、コンソールに次のメッセージが表示されます。
Before clicking - false
Now, the state is - false
this.state.switch
がthis.setState({switch: !this.state.switch})
によって変更されている必要があるため、2番目のラインは、true
を表示するようになっています。
私はこれをどのように解釈するべきかわかりません。 アドバイスをいただければ幸いです!
いいえ、非同期です。設定後に状態を記録したい場合は、 'setState'のコールバックを使うことができます:http://stackoverflow.com/questions/40641998/when-is-it-safe-to-save-state-in-react/ 40642027#40642027 –
部分的に真です。 'setState'も同期しているかもしれません。 – Andreyco