首页 > 解决方案 > 从 SecureStore 获取数据并保存在一个状态

问题描述

我想将用户名保存在username状态。现在在控制台中我运行时看不到componentDidMount用户名。

但是,如果我放一个按钮并按下它,我可以看到用户名。

componentDidMount(){
    this._get_loggin_data();
    console.log(this.state.username);
}

_get_loggin_data = async () => {
  let result = await SecureStore.getItemAsync('username');
  this.setState({username:result})
}

标签: react-nativeexpo

解决方案


那是因为 JS 是单线程的。一旦didMount执行,您的_get_login_data函数就会在事件循环中排队,本质上是异步的,然后didmount继续执行控制台语句,之后_get_login_data实际执行。

您也应该尝试将您的异步写入,以便在控制台之前didMount访问等待执行。_get_login_data

async componentDidMount(){
    await this._get_loggin_data();
    console.log(this.state.username);
}

我建议您学习JS 中的事件循环以及如何处理和执行异步和回调。


推荐阅读