React Native AsyncStorage存储数据报错问题求助
问题解决:React Native AsyncStorage 获取数据返回Promise的问题
问题原因
AsyncStorage.setItem() 和 AsyncStorage.getItem() 都是异步操作,它们返回的是Promise对象,而非直接的存储数据。你代码里直接把getItem的返回值赋值给abc,打印出来自然是Promise实例,不是你期望的JSON数据。
另外你的代码里存在冗余操作:ars = options后转成字符串再解析成对象完全没必要,直接使用options即可。
修正后的代码
onPress={async () => { const press = item.id; // 直接使用options,无需重复序列化反序列化 for (const item of options) { if (item.id === press) { const productDataStr = JSON.stringify(item); // 异步存储需用await等待完成 await AsyncStorage.setItem('ProductData', productDataStr); // 异步获取也需用await拿到实际数据 const abc = await AsyncStorage.getItem('ProductData'); // 若需要使用对象格式,解析字符串 const productData = JSON.parse(abc); console.warn(productDataStr); console.warn(productData); } } }}
补充说明
- 用
async/await处理异步操作,确保存储完成后再获取数据,保证数据一致性 - 变量声明尽量用
const/let替代var,避免变量提升导致的作用域问题 - 后续使用存储的对象数据时,需要用
JSON.parse()把字符串转回对象格式
内容的提问来源于stack exchange,提问作者aysekaplan
相关产品推荐
相关产品推荐

