Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android React Native中具有AsyncStorage的GetItem不工作_Android_React Native_Mobile_Asyncstorage - Fatal编程技术网

Android React Native中具有AsyncStorage的GetItem不工作

Android React Native中具有AsyncStorage的GetItem不工作,android,react-native,mobile,asyncstorage,Android,React Native,Mobile,Asyncstorage,我是react native的新手,当我试图从异步存储中获取数据时,在索引1处获取绑定值为null。下面是我的代码react native中的存储 Alert.alert( 'Info', 'React AsyncStorage', [ {text: 'Get Data',onPress: () => this.getValue('name'),}, {text: 'Save Data', on

我是react native的新手,当我试图从异步存储中获取数据时,在索引1处获取绑定值为null。下面是我的代码react native中的存储

Alert.alert(
        'Info',
        'React AsyncStorage',
        [
            {text: 'Get Data',onPress: () => this.getValue('name'),},
            {text: 'Save Data', onPress: () => this.saveValue('name', 'abc'),}
        ],
        {cancelable: false},
        );


async saveValue(key:String, value:bool) {
     AsyncStorage.setItem(key, value);
     Alert.alert('Data', 'saving');         
}
async getValue(key) {         
    // try {
    //     await AsyncStorage.getItem(Constant.SHOW_INTRO).then((value) =>
    //         console.log(`AsyncStorage GET for Constant.SHOW_INTRO: "${value}"`));

    // } catch (error) {
    //     Alert.alert('Error', 'Error retrieving data');
    // }

    try {
        const value = await AsyncStorage.getItem(key)
        console.log(`AsyncStorage GET for "${key}": "${value}"`);
    } catch (error) {
        Alert.alert('Error', 'Error retrieving data');
    }
}
请帮助。

试着这样做:

async getValue(key){
  try {
    const value = await AsyncStorage.getItem(key)
    console.log(`AsyncStorage GET for "${key}": "${value}"`);
  } catch (error) {
    Alert.alert('Error', 'Error to retrieve data');
  }
}

您可以使用以下格式:

setData = (value) => {
    // if value is an Object use this: value = JSON.stringify(value)
    // if value is a number use this: value = value.toString()
    AsyncStorage.setItem('myKey', value, () => {
        console.warn('Done!')
    })
}

getData = () => {
    AsyncStorage.getItem('myKey').then(storage => {
        console.warn(storage)
    }).catch(e => console.warn(e))
}
然后:

this.setData('sample text') 
编辑:


AsyncStorage获取数据需要一些时间,因此在值可用之前,它会返回一个承诺。您必须调用
then()
函数并从中获取值。从存储器中检索值后,将调用
then()
函数中的任何内容。

Hi@angle你能在上重现这个问题吗?@MazinoSUkah我在你推荐的网站上尝试过。这段代码完全可以在上面运行。我找不到我的环境的问题。请提供链接我的代码工作正常我的visual studio代码环境有问题。@Angel那么你能发布整个组件/代码块以便我们了解完整的上下文吗?我认为这是一个与安卓本身有关的问题,而不是本地反应。你知道我的问题是什么吗环境问题?因为这段代码完全可以在计算机上运行website@Angel也许这和JSC有关