array.findIndex не является функцией - PullRequest
0 голосов
/ 16 марта 2020

При создании корзины в режиме «Реагировать нативно», когда корзина пуста, я могу добавлять товары в корзину, но если я покидаю экран, а затем снова возвращаюсь, чтобы добавить больше товаров или увеличить количество существующих товаров в корзине, я получаю ошибка "cartItems.findIndex не является функцией"

Вот код

const [cartItems, setCartItems] = useState([]);

const setCart = async value => {
  if (AsyncStorage) {
    await AsyncStorage.setItem("cart", JSON.stringify(value));
  }
};

const getCart = async () => {
  if (AsyncStorage && await AsyncStorage.getItem("cart")) {
    return await AsyncStorage.getItem("cart");
  }
  return [];
};


  // Get cart items on component mount
  useEffect(() => {
    getCart()
      .then(data => setCartItems(data))
      .catch(e => console.log(e));
  }, []);

  console.log(cartItems);

  // Add to cart
  const addToCart = product => {
    const index = cartItems.findIndex(item => item._id == product._id);
    // if item is not already in cart
    if (index === -1) {
      cartItems.push({
        ...product,
        quantity: 1
      });
      const updateCart = [...cartItems];
      setCartItems(updateCart);
      setCart(updateCart);
    } else {
      // if item already in cart
      cartItems[index].quantity += 1;
      const updateCart = [...cartItems];
      setCartItems(updateCart);
      setCart(updateCart);
    }
  };

и вот данные, которые я получаю, когда я console.log (cartItems)

[{
"_id":"5e6aacca73fa9c323d666462",
"name":"Black T-shirt",
"description":"Grade A fabric. Awesome black t-shirt",
"price":10.99,
"image":{
"url":"/uploads/069963b003e5457ebee681a6537dbedc.png",
"__typename":"UploadFile"
},
"__typename":"Product",
"quantity":1
}]

1 Ответ

0 голосов
/ 16 марта 2020

Вы должны разобрать строку в json объект

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