REACT: TypeError: Невозможно прочитать свойство 'productID' из неопределенного - PullRequest
0 голосов
/ 13 февраля 2019

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

TRYING: , чтобы получить объекты из локального хранилища и проанализировать их productID иselectedQty значения свойств в int.

Когда я регистрирую их typeof значение, то есть

   console.log("parse value", typeof item.selectedQty);

Я получаю *"parse value number" ... Отлично!

Однако япо-прежнему выдается ошибка REACT:

Ошибка типа: невозможно прочитать свойство 'productID' из неопределенного

 46 | if (allItems && Array.isArray(allItems)) {
  47 |   for (let i = 0; i <= allItems.length; i++) {
  48 |     var item = allItems[i];
> 49 |     item.productID = parseInt(item.productID);
  50 | ^   item.selectedQty = parseInt(item.selectedQty);
  51 | 
  52 |     console.log("parse value", typeof item.productID);

Отслеживание стека до

Cart.componentDidMount
src/components/cart.jsx:14
  11 | };
  12 | componentDidMount() {
  13 |   // 1. Add Items In Cart
> 14 |   var updateCartItems = this.addItemToCart();
     | ^  15 | 
  16 |   // 2. Caclulate total cart value
  17 |   var newCartValue = this.getCartValue(updateCartItems);

код

  addItemToCart() {
    var allItems = JSON.parse(localStorage.getItem("itemsArray"));
    // console.log("--->", Array.isArray(allItems), allItems);
    // allItems.map(item => JSON.parse(item));

    var updateCartItems = this.state.cartItems;

    if (allItems && Array.isArray(allItems)) {
      for (let i = 0; i <= allItems.length; i++) {
        var item = allItems[i];
        item.productID = parseInt(item.productID);
        item.selectedQty = parseInt(item.selectedQty);

        console.log("parse value", typeof item.productID);
        console.log("parse value", typeof item.selectedQty);
        updateCartItems.push(item);
      }
    }
    return updateCartItems;
  }

  componentDidMount() {
    // 1. Add Items In Cart
    var updateCartItems = this.addItemToCart();

    // 2. Caclulate total cart value
    var newCartValue = this.getCartValue(updateCartItems);

    this.setState({ cartValue: newCartValue, cartItems: updateCartItems });
  }

1 Ответ

0 голосов
/ 13 февраля 2019

Я думаю, что есть проблема с вашим для кода цикла, если цикл начинается с 0 , тогда нужно идти до длины - 1 .

Изменить

for (let i = 0; i <= allItems.length; i++)

на

for (let i = 0; i < allItems.length; i++)
...