尝试放入购物车系统的数据时出现错误。
尝试[json];
时可以放置数据,但是将其更改为[...json];
时不能放置数据
[json];
给了我我放的最后一个物品,但我需要所有这些物品
addCart=()=>{
const sepets = AsyncStorage.getItem("sepet")
.then(req => {
const json = JSON.parse(req);
const sepet=[...json];
sepet.push({isim:this.props.title,fiyat:this.props.fiyat,image:this.props.image});
AsyncStorage.setItem("sepet",JSON.stringify(sepet));
});
}
给我的错误“可能未处理的承诺被拒绝(id:0): TypeError:散布不可迭代实例的无效尝试 TypeError:散布不可迭代实例的无效尝试 在_nonIterableSpread“
我要删除这样的项目 导出默认类aksiyos扩展了React.Component {
constructor(props) {
super(props);
this.state = {
ApiTitle: [],
}
}
componentDidMount() {
var sepet=AsyncStorage.getItem("sepet").then(req=>JSON.parse(req)).then(json=>{
this.setState({ApiTitle: json });
});
}
removeCart=()=>{
AsyncStorage.removeItem("sepet")
}
render() {
return (
<View style={{backgroundColor: "white"}}>
<ScrollView>{this.state.ApiTitle.map((ids, i)=>
<Text>{ids.isim}</Text>
)}
</ScrollView>
<Text onPress={this.removeCart}>Buton</Text>
</View>
);
}
}
`
答案 0 :(得分:0)
解析数据时,您不需要多余的.then()
。您还需要检查是否为空,删除项目后,getItem将返回空。
const sepets = AsyncStorage.getItem("sepet")
.then(req => {
let json = JSON.parse(req);
if (!json) {
json = [];
}
const sepet=[...json];
sepet.push({isim:this.props.title,fiyat:this.props.fiyat,image:this.props.image});
AsyncStorage.setItem("sepet",JSON.stringify(sepet));
console.log(sepet)
});
在渲染中验证ApiTitle
,然后再使用它。
render() {
const items = this.state.ApiTitle || [];
return (
<View style={{ backgroundColor: "white" }}>
<ScrollView>{items.map((ids, i) =>
<Text>{ids.isim}</Text>
)}
</ScrollView>
<Text onPress={this.removeCart}>Buton</Text>
</View>
);
}