我是React的初学者,但是我已经在多个地方搜索过,但无法解决。我的问题是在react native中更改变量的值,基本上我需要创建一个函数来将变量设置为true或false,但是当我尝试使用该变量时,它始终为false。
在构造函数中:
this.state = {
uid: "",
name: "",
email: "",
pass: "",
loading: false
};
该函数调用按钮:
setLoader = () => {
console.log(this.state.loading);
this.setState({ loading: !this.state.loading });
console.log(this.state.loading);
};
控制台的出口是:
[19:52:10] false
[19:52:10] false
答案 0 :(得分:2)
这是因为设置状态是异步任务。设置需要花费时间。如果您像尝试做的那样尝试调用该值,则会发现它尚未更新,这是预期的行为。
如果要在设置后找出状态值,则应执行以下操作
this.setState(previousState => {
return { loading: !previousState.loading }
}, () => console.log(this.state.loading));
setState接受一个回调,一旦设置了状态,就会调用
查看这三篇描述状态的真棒文章
https://medium.learnreact.com/setstate-is-asynchronous-52ead919a3f0
https://medium.learnreact.com/setstate-takes-a-callback-1f71ad5d2296
https://medium.learnreact.com/setstate-takes-a-function-56eb940f84b6