2017-07-06 73 views
0

基本上,在我的应用程序中,人们必须验证他们何时成功应对挑战。 当他们点击确认按钮,我省的“钥匙”:与功能挑战的“价值”:React Native - 从异步显示数据AsyncStorage.getItems

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); 
    }); 
}); 

}); }

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

其实,我愿做一种:

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

非常感谢!!

回答

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> 
) 
} 
+0

谢谢! 所以我调用了componentDidMount()方法中的getAllDatas。 但在能够使用状态之前,我必须在我的构造函数中初始化它......我可以在我的this.state中存储什么值= {stores:???在初始化? –

+0

是的,所以只需要以空数组开始:'this.state = {stores:[]}' –