反映本机状态

时间:2019-01-22 22:00:26

标签: react-native

我是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

1 个答案:

答案 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

相关问题