react-native - 如何使用 async/await 通过使用函数从 AsyncStorage 中检索值以响应 native

标签 react-native asyncstorage

我已经创建了 prefsManager.js - 用于从 AsyncStorage 存储和检索数据,但我遇到了一个问题,比如当打印日志时它总是返回未定义,因为它是异步的,但我想通过函数的调用。

import { AsyncStorage } from 'react-native';
import prefskey from '../utils/constants/prefskeys';

const setValue = async (key, value) => {
    await AsyncStorage.setItem(key, value);
}

const getValue = async (key) => {
    let value = '';
    try {
        value = await AsyncStorage.getItem(key) || 'none';
    } catch (error) {
        // Error retrieving data 
        console.log(error.message);
    }
    return value;
};

const prefsmanager = {
    setValue,
    getValue
}
export default prefsmanager; 

当按下按钮时,我在 Home.js 中使用了这个方法。

_handlePress() {

        await prefsManager.setValue(prefskey.username, this.state.username)

        console.log("username =>>", await prefsManager.getValue(prefskey.username)); 

     }

最佳答案

你需要像这样在你的函数上使用 async 关键字。

    import { AsyncStorage } from 'react-native';
import prefskey from '../utils/constants/prefskeys';

const prefsnamager = {

    setValue: function (key, value) {
        AsyncStorage.setItem(key, value)
    },

    getValue: async (key) => {
        let value = '';
        try {
            value = await AsyncStorage.getItem(key) || 'none';
        } catch (error) {
            // Error retrieving data
            console.log(error.message);
        }
        return value;
    }
}
export default prefsnamager;

调用函数

_handlePress = () => {
        prefsManager.setValue(prefskey.username, this.state.username)

        console.log("username =>>" , prefsManager.getValue(prefskey.username));

     }

关于react-native - 如何使用 async/await 通过使用函数从 AsyncStorage 中检索值以响应 native ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54211163/

相关文章:

javascript - React Native - 使用 AsyncStorage 将数据存储在另一个屏幕中

react-native - 异步存储不会在应用程序重新加载时持续存在

reactjs - "Rendered more hooks than during the previous render"当钩子(Hook)的初始值是来自数据库的查询结果时出错

ios - 创建了新的 XCode 配置和方案 - 链接器突然失败

javascript - WARN ViewPropTypes 将从 React Native 中移除。迁移到从 'deprecated-react-native-prop-types' 导出的 ViewPropTypes

android - Android Studio 4.0.1,Gradle和React Native:存在时找不到AndroidManifest.XML

reactjs - 如何在 FlatList 上添加新元素,例如聊天应用程序?

javascript - React Native - 检索 AsyncStorage 中除键之外的所有内容?

react-native - 状态更改时 useEffect 未运行

react-native - React Native - 将新项目推送到现有的 AsyncStorage 键?