我的應用很簡單:一個按鈕有一個狀態toggleButton
。在構造函數toggleButton
中設置爲默認值false
。當我按下按鈕時,應用程序將開始記錄一些傳感器和他們的數據到Chrome調試器屏幕。切換按鈕第一次不跳轉
constructor(props) {
super(props);
this.state = {
toggleButton: false
};
}
recordSensors() {
let toggleButton = !this.state.toggleButton;
this.setState({ toggleButton });
if (this.state.toggleButton) {
// start & record some sensors data
} else {
// stop recording
}
}
render() {
return (
<View style={styles.container}>
<TouchableOpacity
style={styles.toggleButton}
onPress={() => this.recordSensors()}
>
<Text style={styles.buttonText}>
{this.state.toggleButton ? 'Stop' : 'Start'}
</Text>
</TouchableOpacity>
<Text>
{this.state.toggleButton ? 'Recording...' : null}
</Text>
</View>
);
}
奇怪的是,我第一次按下按鈕,其文本改爲Stop
和Recording...
文本出現,但應用程序沒有記錄傳感器的數據。當我再次按下按鈕(第二次)時,它現在會記錄下來。
但是,如果我將if (this.state.toggleButton)
更改爲那麼它工作正常。我無法理解它的邏輯了。你們能幫忙嗎?
[狀態更新可以是異步的(https://facebook.github.io/react/docs/state- and-lifecycle.html#state-updates-may-be-asynchronous),你的狀態可能在你執行if語句的時候沒有被更新 –