使用AsyncStorage时遇到的问题

问题描述 投票:0回答:1

我正在开发一个简单的应用程序,我需要保存一些用户数据,所以我使用AsyncStorage这样的功能。

const storeAge = async (age) => {
        try {
            console.log("STORED age: " +  age);
            await AsyncStorage.setItem("@age", age);
        } catch (e) {
            // saving error
        }
    };

我在这里调用这个函数。

<SetupInfo
    visible={isStartUp}
    onRegist={registHandler}
    onRegistDataSave={storeAge}
/>

在这里调用这个函数: onRegistDataSave 当按下SetupInfo组件上的一个按钮时,会被调用。

const addRegistHandlerMemory = () => {
        if (!isEnabled) {
            props.onRegistDataSave(age / 12);
        } else {
            props.onRegistDataSave(age);
        }
        setAge("");
    };

...

<Button
    title="REGIST"
    onPress={() => {
        addRegistHandler();
        addRegistHandlerMemory();
        }}
        style={styles.button}
    />

当按钮被按下时,store.age上的console.log显示的是正确的输入,但是当我重新加载应用程序并调用这个函数时,我得到的值是null,为什么会这样?

const getAge = async () => {
    try {
        const value = await AsyncStorage.getItem("@age");
        if (value !== null) {
            console.log("valor" + value)
            setAppMode(false);
            setAge(parseFloat(value));

        }
        console.log("age " + value);
    } catch (e) {
        // error reading value
    }

};

我得到的值是空的,为什么会这样?

(好吧,我想我知道,因为我正在做同样的思考,在一个数组上保存数据,最后一个值没有保存,这意味着可能是保存在下一个渲染上,对我来说--一个新手--没有意义,因为设置年龄是一个异步函数,应该避免这种情况...)

javascript react-native
1个回答
0
投票

哦,我想明白了,是哪里出错了。原来我保存的是一个数字,而AsyncStorage只保存Strings,所以我只需要加上 const string = toString(age); 关于 storeAge 并保存该值。

© www.soinside.com 2019 - 2024. All rights reserved.