react-native - 从 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})
}
解决方案
那是因为 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 中的事件循环以及如何处理和执行异步和回调。
推荐阅读
- c++ - 数组升序排序 - 冒泡排序
- python-telegram-bot - InlineQueryResultArticle - thumb_url 上传的图片
- wso2 - 使用Postman二进制方式上传文件到wso2 esb无法接收文件?
- asp.net-core - 覆盖 ModelBindingMessageProvider 错误消息
- c - 如何在 C 中使用 strstr() 来计算另一个文件中的关键字?
- mysql - 修复不明确的 SQL 语法错误的正确方法是什么?
- ruby-on-rails - rails 在表单提交时将当前用户电子邮件存储在数据库中
- api - 如何在 shopify 中集成 3rd 方 api?
- react-native - 如何调整 ImageBackground 组件中的背景位置(React Native)?
- java - 如何将 JpaRepository 结果转换为我的自定义 DTO 类