通过 AsyncStorage React-native 输入数据时出错
Getting error while entering data via AsyncStorage React-native
我在尝试为我的购物车系统输入数据时遇到错误。
我尝试 [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)”的错误:
类型错误:传播不可迭代实例的无效尝试
类型错误:传播不可迭代实例的无效尝试
在 _nonIterableSpread “
我要删除这样的项目
导出默认 class 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>
);
}
}
`
解析数据时不需要额外的 .then()
。您还需要检查 null,删除项目后,getItem 将 return null.
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>
);
}
我在尝试为我的购物车系统输入数据时遇到错误。
我尝试 [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)”的错误: 类型错误:传播不可迭代实例的无效尝试 类型错误:传播不可迭代实例的无效尝试 在 _nonIterableSpread “
我要删除这样的项目 导出默认 class 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>
);
}
}
`
解析数据时不需要额外的 .then()
。您还需要检查 null,删除项目后,getItem 将 return null.
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>
);
}