Существует проблема с AsyncStorage в React-native - PullRequest
0 голосов
/ 12 мая 2019

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

По какой-то причине, это похоже на открытие массива в массив

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

но он показывает только последний объект, который я выбрал

Также я не знаю, как удалить эти объекты.

1 Ответ

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

Вы сохраняете свои элементы в виде массива, но вы также получаете их и помещаете в новый массив.Имеет смысл, что вы получаете только последний визуализированный элемент, потому что это может быть единственный элемент, который не находится внутри другого массива.Вы можете исправить это, просто используя оператор распространения.

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

Извлечь метод removeItem() в Реагировать на собственные документы для удаления элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...