reactjs - 无法从 AssyncStorage 检索数据

标签 reactjs react-native asyncstorage

我正在使用 @react-native-community/async-storage 中的 AssyncStorage 包,在检索存储的数据时遇到了一个大问题。

我不知道如何解析这些 Promise 结果。

有趣的是,如果我在 if 语句中 console.log(value),它会显示正确的文本,但它会返回 Promise。

这是我的功能:

const getData = async (key: string) => {
    try {
      const value = await AsyncStorage.getItem(key)

      if(value !== null) {
        return value
      }
    } catch(e) {
      TriggerAlert(I18n.t('error.readError') + e)
    }
  }

这就是我调用函数的方式

console.log(getData('@key'))

这是我得到的输出:

Promise {
  "_40": 0,
  "_55": null,
  "_65": 0,
  "_72": null,
}

最佳答案

以下是正确的,您提取数据的方式:

const getData = async (key: string) => {
    try {
      const value = await AsyncStorage.getItem(key)

      if(value !== null) {
        return value
      }
    } catch(e) {
      TriggerAlert(I18n.t('error.readError') + e)
    }
  }

您唯一想要更改的是函数调用位置,因为 getData 是一个异步函数,它将返回 promise ,因此您想要等到 promises 解决或拒绝。

所以你可以通过 ,

let myFunction = async() => {

  console.log(await getData('@key'))
}

希望对你有帮助。有疑问请随意

关于reactjs - 无法从 AssyncStorage 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62395063/

相关文章:

sqlite - react-native array.map 与 asyncstorage.getItem

jquery - 如何在 React 中缓存 jQuery ajax 结果?

android - Expo - APK 包必须包含预期的嵌入式 Assets

reactjs - 如何将 React 中的 localStorage 代码转换为 React Native 中的 AsyncStorage?

react-native - PermissionsAndroid.request 和 PermissionsAndroid.check 之间的区别

reactjs - react native 多个可拖动和可调整大小的平面列表

reactjs - react native 异步存储 : Cannot resolve promise returned by getItem

reactjs - ag-grid react cellRendererFramework 在状态改变时不会重新渲染

javascript - 将一个类导入到react中

javascript - 方法发布不适用于 Axios 和 React JS