AsyncStorage 将 Promise 转换为 JSON 格式

AsyncStorage Converting Promice to JSON Formate

经过大量尝试后,代码在不同的地方给出了两个不同的输出,我无法弄清楚。请帮助我,我是 React Native 的新手。 console.log(files) 这个函数给出一个输出和 console.warn( jsonValue != null ? JSON.parse(jsonValue) : null);给出另一个输出

   storeData = async () => {
    try {
      const jsonValue = JSON.stringify(
              {
                  "Belgin":"Test Check"
              }
      )
      await AsyncStorage.setItem('BelginKey', jsonValue)
    } catch (e) {
      console.log(e)
    }
  }

  getData = async () => {
    try {
      const jsonValue = await AsyncStorage.getItem('BelginKey')
      console.warn( jsonValue != null ? JSON.parse(jsonValue) : null); // Output as {"belgin":"Text Test"}
      
    } catch(e) {
      console.log(e)
    }
  }

  change_and_display=()=>{
      const files = this.getData()
      console.log(files) // Output as {"_40": 0, "_55": null, "_65": 0, "_72": null}
  }
    

render(){
    return(
        <SafeAreaView style={styles.container} >
            <TouchableOpacity onPress={this.storeData} style={{height:"10%",width:"100%",backgroundColor:"#000"}}>
                <Text style={{color:"#FFF"}}>Click This To Add Value</Text>
            </TouchableOpacity>
            <TouchableOpacity onPress={this.change_and_display} style={{height:"10%",width:"100%",backgroundColor:"#a1a1a1"}}>
                <Text style={{color:"#FFF"}}>Click This To Get Value</Text>
            </TouchableOpacity>
            <Text></Text>
            
        </SafeAreaView>
    )
}

}

您忘记 return 您的值 getData() 这就是它不起作用的原因。

另外不要忘记异步函数 return 是一个 Promise,因此要获取 getData() 的值,请使用 async/await 或 .then()

然后当你使用 OnPress() 时,不要忘记总是在里面放一个箭头函数,这样它只会在你按下时呈现。

示例:onPress={() => this.storeData}