这是我的初始状态:
this.state = {
requiredError: false,
addressSelectError: false,
recipientError: false,
open: false,
};
这是我的问题所在:
processCheckout () {
this.setState({
requiredError: true,
addressSelectError: true,
recipientError: true,
}, () => {
console.log('required error', requiredError);
console.log('address error', addressSelectError);
console.log('recipient error', recipientError);
})
}
我将它们全部设置为true
,但控制台仍记录为false:
我已经使用了回调,但是它仍然没有改变。有帮助吗?
我正在调用按钮processCheckout()
上的onClick()
函数。
编辑:我已经尝试过在渲染中登录控制台,并且它们都是true
答案 0 :(得分:2)
将函数更改为箭头语法,以便可以访问全局状态。
processCheckout= () => {
this.setState({
requiredError: true,
addressSelectError: true,
recipientError: true,
}, () => {
console.log('required error', this.state.requiredError);
console.log('address error', this.state.addressSelectError);
console.log('recipient error', this.state.recipientError);
})
或将其绑定到
等构造函数constructor(props) {
super(props);
// This binding is necessary to make `this` work
this.processCheckout = this.processCheckout.bind(this);
}
您可以详细了解here
答案 1 :(得分:1)
没有看到完整的代码,我假设您已经声明了变量
requiredError, addressSelectError and recipientError
在您课堂上的某个地方:
在回调中,尝试直接访问this.state
processCheckout() {
this.setState(
{
requiredError: true,
addressSelectError: true,
recipientError: true
},
() => {
console.log("required error", this.state.requiredError);
console.log("address error", this.state.addressSelectError);
console.log("recipient error", this.state.recipientError);
}
);
}