在React Native iOS和Android Expo应用程序中保存一个字符串

问题描述

我曾经尝试过使用异步存储,但显然我错过了一些东西-如果有人可以提供帮助,将不胜感激。

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');
    }
  };

getLevel在didMount()函数中被调用

解决方法

您是从存储中获取存储的字符串吗?

const str = await AsyncStorage.getItem("level");

为了使其持久化,您需要从存储中获取它并将其设置为状态变量的初始值。

编辑:

在componentDidMount()中尝试以下操作;

componentDidMount(){
    this.getLevel().then((level)=>{
       console.log('level =',level);
    }
}