问题描述
我曾经尝试过使用异步存储,但显然我错过了一些东西-如果有人可以提供帮助,将不胜感激。
saveLevel = async () => {
try {
let levelToSave = String(this.state.level);
await AsyncStorage.setItem("level",levelToSave);
} catch (err) {
console.log(err);
}
};
我从setState({},()=> {here()})的回调中调用此函数
但是,我只需要1个字符串的持久存储。我想到要使用fs.readFile,但这在React中不可用。
当然,有一种小技巧可以持久保存此字符串。谢谢。
p.s。我不介意实现这一目标的丑陋方式。
componentDidMount() {
let getLevelAsync = this.getLevel();
console.log(getLevelAsync)
*logs*
Promise {
"_U": 0,"_V": 0,"_W": null,"_X": null,}
getLevel = async () => {
try {
let level = await AsyncStorage.getItem("level");
console.log(level,'trying to get level')
if (level !== null) {
return level;
}
} catch (err) {
console.log(err,'no get worky');
}
};
解决方法
您是从存储中获取存储的字符串吗?
const str = await AsyncStorage.getItem("level");
为了使其持久化,您需要从存储中获取它并将其设置为状态变量的初始值。
编辑:
在componentDidMount()中尝试以下操作;
componentDidMount(){
this.getLevel().then((level)=>{
console.log('level =',level);
}
}