【问题标题】:Get data from SecureStore and save in a state从 SecureStore 获取数据并保存在一个状态
【发布时间】:2019-04-27 16:08:55
【问题描述】:

我想将用户名保存在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-native expo


    【解决方案1】:

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

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

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

    我建议你学习 JS 中的 Event Loop 以及如何处理和执行异步和回调。

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      相关资源
      最近更新 更多