React Native - 显示来自异步AsyncStorage.getItems的数据

时间:2017-07-06 22:23:44

标签: javascript reactjs asynchronous react-native

基本上,在我的应用中,人们必须在挑战成功时进行验证。 当他们点击验证按钮时,我使用函数

保存挑战的“密钥”:“值”
async function validate(challenge_nb)
{
 try {
   await AsyncStorage.setItem(challenge_nb, 'OK');
 } catch (error) {
   console.log("error")
 }
}

工作正常。

现在,我想收回这些数据并将其显示在列表中......而且我不知道如何做到这一点。

我试图使用这种函数来获取我保存的所有键/值:

async function getalldatas()
{
AsyncStorage.getAllKeys((err, keys) => {
AsyncStorage.multiGet(keys, (err, stores) => {
 stores.map((result, i, store) => {
   // get at each store's key/value so you can work with it
   let key = store[i][0];
   let value = store[i][1];
   console.log(value);
  });
});

}); }

但是我不知道如何在我的render()函数中显示它...而且因为它是异步的

实际上,我想做一种:

渲染(    对于每个键/值:      核心价值    end_foreach )

非常感谢!!

1 个答案:

答案 0 :(得分:0)

您可以将其存储到状态值,然后进行条件渲染,p.s。永远不要在你的渲染中放置这样的东西,把它作为你的组件的方法:

getAllDatas = () => {
  AsyncStorage.getAllKeys((err, keys) => {
    AsyncStorage.multiGet(keys, (err, stores) => {
      this.setState({ stores });
    });
  });
}

render() {
  return (
    <View>
      {this.state.stores.length && this.state.stores.map(item =>
        <Text>{`${item[0]}: ${item[1}`}</Text>)}
    </View>
  )
}