如何将数据从AsyncStorage解析为<text>

时间:2017-09-27 19:18:51

标签: react-native expo

从AsyncStorage获取数据时出现以下错误:

  

对象无效作为React子对象(找到:具有键{_40,_65,_55,_72}的对象)

async function setItem(key, value) {
  try {
    await AsyncStorage.setItem(key, value);
    console.log(key, value);
    return value;
  } catch (error) {
    // Handle errors here
  }
}

async function getItem(item) {
  try {
      const value = await AsyncStorage.getItem(item);;
      console.log(value);
      return value;
   } catch (error) {
     // Handle errors here
   }
}


setVar = setItem('username', 'Name');
getVar = getItem('username');

我在输出结果时遇到错误:

<Text>{getVar}</Text>
  

当我检查控制台时,我得到了所需的输出/一切都正确但我无法将文本渲染到屏幕上。

非常感谢任何帮助或建议。

感谢。

2 个答案:

答案 0 :(得分:0)

https://forums.expo.io/t/how-to-parse-data-from-asyncstorage-to-text/3417/4

交叉发布

啊,你的函数getItem给出了一个Promise,记住async关键字会自动使函数返回Promise。因此错误消息,不能将Promise对象放在

建议你:

将您将使用的字符串置于状态: state = {showThisText:&#39;&#39;}

in render:{this.state.showThisText}

然后在异步componentDidMount中,获取数据并执行this.setState({showThisText:YOUR_PULLED_STRING})

答案 1 :(得分:0)

尝试它会起作用,

setVar = await setItem('username', 'Name');
getVar = await getItem('username');

同时使两个调用函数都异步。