React-native 中的 AsyncStorage 存在问题
There is a problem about AsyncStorage in React-native
然后我试图在我的代码中推出一些小的购物车系统,但我的购物车中只有一个值。
不知为何,好像要开个数组进数组
addCart=()=>{
var sepet=AsyncStorage.getItem("sepet").then(req=>JSON.parse(req)).then(json=>{
var 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)
});
}
然后我在尝试
export default class aksiyos extends 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 });
});
}
render() {
return (
<View style={{backgroundColor: "white"}}>
<ScrollView>{this.state.ApiTitle.map((ids, i)=>
<Text>{ids.isim}</Text>
)}
</ScrollView>
</View>
);
}
}
但它只显示我选择的最后一个对象
我也不知道如何删除那些对象。
您正在将您的项目保存为一个数组,但您也正在获取这些项目并将它们放入一个新数组中。有意义的是你只得到最后呈现的项目,因为这可能是唯一不在另一个数组内的项目。您可以通过简单地使用扩展运算符来解决这个问题。
const sepets = await AsyncStorage.getItem("sepet")
.then(req=>JSON.parse(req))
.then(json => {
const sepet=[...json]; // <-- If we saved an array, makes sense to spread it in a new array. Otherwise we get [[sepet], sepet]"
sepet.push({
isim:this.props.title,
fiyat:this.props.fiyat,
image:this.props.image
});
AsyncStorage.setItem("sepet",JSON.stringify(sepet)); // <-- save the array
console.log(sepet)
return sepet;
});
检查 React Native Docs 中的 removeItem()
方法以删除项目。
然后我试图在我的代码中推出一些小的购物车系统,但我的购物车中只有一个值。
不知为何,好像要开个数组进数组
addCart=()=>{
var sepet=AsyncStorage.getItem("sepet").then(req=>JSON.parse(req)).then(json=>{
var 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)
});
}
然后我在尝试
export default class aksiyos extends 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 });
});
}
render() {
return (
<View style={{backgroundColor: "white"}}>
<ScrollView>{this.state.ApiTitle.map((ids, i)=>
<Text>{ids.isim}</Text>
)}
</ScrollView>
</View>
);
}
}
但它只显示我选择的最后一个对象
我也不知道如何删除那些对象。
您正在将您的项目保存为一个数组,但您也正在获取这些项目并将它们放入一个新数组中。有意义的是你只得到最后呈现的项目,因为这可能是唯一不在另一个数组内的项目。您可以通过简单地使用扩展运算符来解决这个问题。
const sepets = await AsyncStorage.getItem("sepet")
.then(req=>JSON.parse(req))
.then(json => {
const sepet=[...json]; // <-- If we saved an array, makes sense to spread it in a new array. Otherwise we get [[sepet], sepet]"
sepet.push({
isim:this.props.title,
fiyat:this.props.fiyat,
image:this.props.image
});
AsyncStorage.setItem("sepet",JSON.stringify(sepet)); // <-- save the array
console.log(sepet)
return sepet;
});
检查 React Native Docs 中的 removeItem()
方法以删除项目。