Używam Redux do zarządzania stanem koszyka, ale na ponownym uruchomieniu aplikacji, stan koszyka staje się pusty. Aby rozwiązać, pomyślałem o użyciu asyncstorage, aby zapisać dane i uzyskać go w CompontentdidMount, ale pokazuje NULL zamiast danych koszyka.

kod akcji Redux

case 'ADD_TO_CART':
       {
           const updatedCart = [...state.cart];
           const item = updatedCart.find(x=>x.key===action.payload.key);
           if(item)
           {
            item.count++;
           }
           else{
             updatedCart.push(action.payload);
           }
           AsyncStorage.setItem('cart',{...state,cart: updatedCart,total: state.total + 1})
            return {
                ...state,
                cart: updatedCart,
                total: state.total + 1,
               
            }
       }

Dane pobierania

async componentDidMount() {
     const item = await AsyncStorage.getItem('cart'))
     console.log(item)
  }

Mam jeszcze jedną akcję, aby usunąć element koszyka, w którym ta sama metoda Setitem jest używana do ustawienia stanu koszyka.

0
Lovepreet Singh 26 lipiec 2020, 21:05

1 odpowiedź

Najlepsza odpowiedź

Po ustawieniu obiektu do magazynu asynchronicznego powinno być ciągiem nie jest obiektem, więc użyj json.Strigify i ustaw element taki jak poniżej

AsyncStorage.setItem('cart',JSON.stringify({...state,cart: updatedCart,total: state.total + 1}));

Kiedy otrzymasz przedmiot, użyj JSON.PARSE (), aby przeanalizować je jak poniżej

   const item = await AsyncStorage.getItem('cart'))
     console.log(JSON.parse(item))

Wymaganie jest utrzymywanie stanu Redux Uważaj za pomocą https://github.com/rt2ZZ/redux-persist Który będzie utrzymywać stan, gdy zamkniesz aplikację.

0
Guruparan Giritharan 26 lipiec 2020, 18:29