我的应用很简单:一个按钮有一个状态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语句的时候没有被更新 –