Получение ошибки при вводе данных через AsyncStorage React-native - PullRequest
1 голос
/ 12 мая 2019

Я получаю сообщение об ошибке, когда пытаюсь поместить данные для своей системы корзины.

Я могу поместить данные, когда я пытаюсь [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 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 });


       });




      }

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

`

1 Ответ

0 голосов
/ 12 мая 2019

Вам не нужны дополнительные .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>
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...