我在平面列表数据属性中使用了下面的函数,但是它没有呈现任何东西。为什么?我认为另一种方法是在函数中设置状态,并将状态用作平面列表数据属性,但是在这种情况下,无论异步存储何时改变,我如何设置状态?
async function getFlatlistData(){
try{
const numbers = await AsyncStorage.getAllKeys();
//numbers =
// ["{\"key\":\"1678328476308\",\"title\":\"Dog\"}",
//"{\"key\":\"1678328921886\",\"title\":\"Cat\"}"]
numbers.forEach(function myFunction(item, index, arr) {
arr[index] = JSON.parse(item);
arr[index]['key'] = Number(arr[index]['key'])
})
numbers.sort((a, b) => b.key - a.key);
console.log("running")
return numbers
} catch (error) {
alert(error)
}
}
return (
</View>
<FlatList
data={getFlatlistData()}
renderItem={
({item}) => <Text>{item.title}</Text>
}
keyExtractor={(item, index) => index.toString()}
/>
</View>
);
}
1条答案
按热度按时间mzsu5hc01#
FlatList组件未呈现任何内容,因为它接收的是承诺而不是数据数组。
在分配给Flatlist之前,需要使用useState来获取数组。