我一直在通过Expo通过React native开发一个应用程序,最近建议尝试AsyncStorage以便保存数据。无论如何,我尝试修改get_books
函数(好,修改副本),以便可以使用AsyncStorage。通过以下代码,我在调用TypeError: undefined is not a function (near '...rv.map...')
时得到一个unnamed_might_delete()
(我的描述很清楚)。
代码非常混乱,但要点是:
console.log()
语句以查看其实际停止运行的位置,并且该函数似乎从未真正运行过我尝试将行更改为() => unnamed_might_delete()
,这可以防止发生错误,但也无法运行该功能。
我意识到错误应该非常容易调试,因为我知道我的“函数”实际上不是一个函数,但是我不知道如何运行该代码。
我可以找到一些解决办法吗?另外,如果需要的话,请询问澄清!
function get_books2(library){
let rv = [];
const unnamed_might_delete = async () => {
console.log("Inside unnamed_might_delete");
try {
console.log("Awaiting data");
let datas = await AsyncStorage.getItem(library);
console.log("Got data");
if (datas !== null){
console.log("parsing data");
datas = JSON.parse(datas);
for (let i = 0; i < datas[library].books.length; i++){
console.log("adding item "+ i);
let temp = {
added: datas[library].books[i].added,
author: datas[library].books[i].author,
read: datas[library].books[i].read,
subtitle: datas[library].books[i].subtitle,
tags: datas[library].books[i].tags,
title: datas[library].books[i].title,
}
console.log("Pushing temp");
rv.push(temp);
}
}
}catch (error){
Alert.alert(error);
}
}
console.log("calling unnamed_might_delete");
unnamed_might_delete();
console.log("finished unnamed_might_delete");
if (rv.length != 0){
return(
<View>
{
rv.map((l, i) => (
<ListItem
key={i}
title={l.title}
subtitle={l.author}
bottomDivider
chevron
onPress={() =>
navpush('BookScreen', {
title: l.title,
subtitle: l.subtitle,
author: l.author,
tags: l.tags
})}
/>
))
}
</View>
)
} else {
return (
<View><Text>Nothing to see here!</Text></View>
)
}
}