2017-07-06 68 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:[]}' –