如何在React Native App中存储用户首选项?

时间:2019-02-20 07:40:24

标签: react-native asyncstorage

我正在制作一个应用程序,其中包含一些在安装应用程序时应保留的数据。用户以后可以更改此数据。如何仅在安装应用时一次而不是每次打开屏幕时存储数据?
基本上,这些都是应用程序的所有设置,带有默认值(用户首选项),以后可以更改。 我尝试了以下操作:

_retrieveData = async() => {
    try {
        await AsyncStorage.multiGet('r1','r2','r3','r4','r5','fix','box').then(data =>{
            Utils.r1 = data[0][1];
            Utils.r2 = data[1][1];
            Utils.r3 = data[2][1];
            Utils.r4 = data[3][1];
            Utils.r5 = data[4][1];
            Utils.fix = data[5][1];
            Utils.modlShow = data[6][1];
            alert('data got successfully'); 
            if(!Utils.r1 || !Utils.r2 || !Utils.r3 || !Utils.r4 || !Utils.r5 || !Utils.fix || !Utils.modlShow) {
                 AsyncStorage.multiSet(['r1','1'],['r2','2'],['r3','3'],['r4','4'],
                    ['r5','5'],['fix','3'],['box','true']);
            }
        })
    } catch {
        alert('Error in retrieving data');
    }
}

我遇到以下错误:

  

未定义不是函数(正在评估   'requestKeys.map(function(key){return [key,map [key]];})')

如何清除错误并获取值?预先感谢。

1 个答案:

答案 0 :(得分:0)

_retrieveData = async() => {
try {
    const data = await AsyncStorage.multiGet('r1','r2','r3','r4','r5','fix','box')
    const Utils = {}
    Utils['r1'] = data[0][1];
    Utils['r2'] = data[1][1];
    Utils['r3'] = data[2][1];
    Utils['r4'] = data[3][1];
    Utils['r5'] = data[4][1];
    Utils['fix'] = data[5][1];
    Utils['modlShow']= data[6][1];
    alert('data got successfully'); 
    if(!Utils.r1 || !Utils.r2 || !Utils.r3 || !Utils.r4 || !Utils.r5 || !Utils.fix || !Utils.modlShow) {
         return AsyncStorage.multiSet(['r1','1'],['r2','2'],['r3','3'],['r4','4'],
                ['r5','5'],['fix','3'],['box','true']);
        }
} catch {
    alert('Error in retrieving data');
}

}