使用AsyncStorage获取项目的本机/故障

时间:2017-09-25 15:03:16

标签: android react-native

我正在构建一个Android应用程序,我正在努力使用AsyncStorage。我想创建一个函数,它将一个键作为输入并返回给我项目。我的问题是,当我调用此函数时,它返回{_40:0,_65:0,_55:null,_72:null}而不是我要查找的值。

这是我的代码:

renderList() {

    async function save() {
        await AsyncStorage.setItem('Title', 'hello');
    }

    async function fetch(key) {
        const value = await AsyncStorage.getItem(key);
        console.log(value) ; // Return hello
        return value
    }

    save() ;
    fetch() ;

    const reponse = fetch() ;
    console.log(reponse) ; // Return { _40: 0, _65: 0, _55: null, _72: null }

    return (
        <Text style={styles.noteElementTitle}> Aa </Text>
    )
}

修改:

我试过了:

    async function getBody() {
    await save();
    const response = await fetch('Title');
    console.log(response);
    this.setstate({ title : response}) ;
    }

    getBody() ;

但我仍然收到错误:TypeError:undefined不是函数(评估&#39; this.setstate({title:response})&#39;)

1 个答案:

答案 0 :(得分:6)

您所看到的是标记为Promise的函数返回的async对象。您需要在调用函数时使用await,或将值视为承诺并使用thencatch。例如:

await save();
const response = await fetch();
console.log(response);

save()
  .then(() => fetch())
  .then(response => console.log(response));

另外,请记住,您不应该在渲染函数中使用异步函数。在上面的代码中,您希望将fetch()函数的结果放入组件状态。