首页 > 解决方案 > 反应原生状态

问题描述

我是react的初学者,但我已经在几个地方搜索过,我无法解决。我的问题是在 react native 中更改变量的值,基本上我需要创建一个函数来设置变量的真假,但是当我尝试使用该变量时,它总是为假。

在构造函数中:

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

标签: react-native

解决方案


那是因为设置状态是一个异步任务。它需要时间来设置。如果您尝试像您所做的那样调用该值,您会发现它没有更新,这是预期的行为。

如果您想在设置后找出 state 中的值,您应该执行以下操作

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


推荐阅读