通过 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>
  );
}