React Native - 如果我尝试获取字符串,AsyncStorage会返回null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Native - 如果我尝试获取字符串,AsyncStorage会返回null相关的知识,希望对你有一定的参考价值。

我正在使用AsyncStorage,我需要将值存储到“facoltà”并将其保存到调用this.setState的“promessa”中。我写了那段代码:

constructor(props){
  super(props)
  AsyncStorage.setItem("facoltà","PROFS.json")
}
componentWillMount(){
  AsyncStorage.getItem("facoltà").then((value)=>
  { 
    console.log(value); // the console returns me PROFS.json so I thought it was working
    this.setState({promessa:value})
  }):
  var dataObjects=require("../JsonLists/"+this.state.promessa) // but here this.state.promessa returns me null
 }

问题是this.state.promessa返回“null”而不是“PROFS.json”,我无法弄清楚如何解决它。提前感谢您的回答。

答案

ComponentWillMount将不会在构造函数中的setItem Promise之后完成getItem Promise。

尝试:

componentWillMount(){
 AsyncStorage.setItem("facoltà",PROFS.json)
}

render(){
...
  AsyncStorage.getItem("facoltà").then((value)=>alert(value));
...
}

这应该提醒您的数据。

另一答案

AsyncStorage.getItem返回一个promise,因此将在then的回调中解析。这意味着您的下一行var dataObjects=require("../JsonLists/"+this.state.promessa)在承诺解决之前执行。

如果您需要在then方法中立即使用dataObjects,则应将该行放在componentWillMount回调中并具有默认初始值。

另一答案

我认为这是一个时间问题。你正在使用.then的一个promise,它在var dataObjects试图要求它之后设置状态。

您是否尝试将var dataObjects放在.then代码中?

另一答案
async myMethode() {
AsyncStorage.getItem("").then((value)=>alert(value));

}

尝试这样。调用所需的方法

以上是关于React Native - 如果我尝试获取字符串,AsyncStorage会返回null的主要内容,如果未能解决你的问题,请参考以下文章

React Native,图像选择器,获取,表单数据如何发布请求图像

使用 React Native 和 useEffect 获取

从Webview获取(THREE.js)3D模型到我的Native-React(增强现实)应用程序

在 React Native 中获取广告 id

从 URL 获取 React-Native JSON

在 React Native 中使用组件导入获取错误“元素类型无效预期字符串”