我正在使用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”,我无法弄清楚如何解决它。 提前感谢您的回答。
答案 0 :(得分:2)
ComponentWillMount将不会在构造函数中的setItem Promise之后完成getItem Promise。
尝试:
componentWillMount(){
AsyncStorage.setItem("facoltà",PROFS.json)
}
render(){
...
AsyncStorage.getItem("facoltà").then((value)=>alert(value));
...
}
这应该提醒您的数据。
答案 1 :(得分:0)
AsyncStorage.getItem返回一个promise,因此将在- debug:
msg: "{{item | join ()}}"
with_cartesian:
- ['A', 'B']
- ['1', '2']
- ['a','b','c','d']
的回调中解析。这意味着您的下一行then
将在解析承诺之前执行。
如果您的var dataObjects=require("../JsonLists/"+this.state.promessa)
方法中需要then
,则应将该行放在dataObjects
回调中,并设置默认初始值。
答案 2 :(得分:0)
我认为这是一个时间问题。您正在使用带有.then的promise,这是在var dataObjects尝试需要它之后设置状态。
您是否尝试将var dataObjects放在.then代码中?
答案 3 :(得分:0)
async myMethode() {
AsyncStorage.getItem("").then((value)=>alert(value));
}
尝试这样。调用所需的方法
答案 4 :(得分:0)
使用异步/等待。
async componentDidMount () {
try {
const item = await this.someMethodAsync();
} catch (e) {
console.log("Error getting item", e);
}
}
async someMethodAsync () {
try {
let item = AsyncStorage.getItem("foo");
console.log(item);
catch (e) {
throw e;
}
return item; // Could be any value, including null.
}