gpt4 book ai didi

javascript - React Native AsyncStorage.getItem 返回未定义

转载 作者:行者123 更新时间:2023-12-02 23:37:57 25 4
gpt4 key购买 nike

免责声明:仍在学习 RN,第一次使用 AsyncStorage。

所以我尝试在 AsyncStorage 中存储“item”对象的数组。用户可以创建“item”对象,它们最终应该显示在另一个屏幕上的 FlatList(或类似组件)中。

例如:

itemArray = [
{
keywords: "box",
size: "medium",
color: "black",
},
{
keywords: "pillow",
size: "large",
color: "white",
}]

当用户填写文本输入框并点击添加时,我调用一个函数 addItem,该函数从存储中检索当前的 itemArray,并附加另一个 item 对象与表单的值。但是,调用返回的 res 变量似乎未定义。

storeData 函数只需调用 AsyncStorage.setItem()。

我收到错误:TypeError:无法读取未定义的属性“数据”

这是我的代码:

addItem = async () => {
try {
const res = await AsyncStorage.getItem('itemArray')
.then(req => JSON.parse(req))
.then(json => console.log(json));
// Item array is populated, append to it
if(res !== null) {
console.log(res); // Outputs undefined
var itemArray = res.data;

itemArray.push({"keywords": this.state.keywords, "color": this.state.color, "size": this.state.size});
storeData(array);
}
// Item array is not populated, initialize and append
else {
console.log(res); // Outputs undefined
var itemArray = new Array();
itemArray.push({"keywords": this.state.keywords, "color": this.state.color, "size": this.state.size});
storeData(itemArray);
}
} catch(e) {
// error reading value
console.log(e); // Outputs TypeError: Cannot read property 'data' of undefined
}
}

我的 getItem 函数有什么问题吗?

编辑:这是我的 storeData 函数,因为它可能是错误的来源:

storeData = async (itemArray) => {
try {
var itemData = {
data: itemArray,
};
console.log(itemData);
await AsyncStorage.setItem('itemArray', JSON.stringify(itemData))
console.log('success!');
} catch (e) {
// saving error
}
}

最佳答案

如果使用“await”,则不需要使用“then”函数。

相反:

const res = await AsyncStorage.getItem('itemArray')
.then(req => JSON.parse(req))
.then(json => console.log(json));

这样做:

const res = await AsyncStorage.getItem('itemArray');
const parsed = JSON.parse(res);

现在您可以使用“parsed”变量来访问其中的数据:

console.log(parsed.data); // should get you your data...

关于javascript - React Native AsyncStorage.getItem 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56207654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com