Функция обратного вызова с this.setState не работает в componentDidMount - PullRequest
1 голос
/ 01 мая 2020

Я использую Next. js и у меня есть следующие функции:

componentDidMount = () => {
    //Retrieves cart from storage
    let self = this
    this.updateCart(Store.getCart(), self)


    ...
}


updateCart = (cart, self) => {
    var tempCartCost = 0;
    var tempCartItems = 0;
    var {deliveryCost} = this.state;

    if (cart.length > 0) {
      cart.forEach(item => {
        tempCartCost = tempCartCost + (item.quantity * item.price)
        tempCartItems = tempCartItems + (item.quantity)
      })
    } else {
      this.setStep(1) //Falls back to initial page
    }

    var newState = {
      cartCost: tempCartCost,
      authorizedPrice: Math.ceil((tempCartCost + deliveryCost) * 1.1),
      shoppingCart: cart,
      cartItems: tempCartItems
    }

    self ? this.setState(newState) : this.setState(newState)

    (cart !== Store.getCart()) && Store.setCart(cart)

  }

Теперь код работает. Однако я не понимаю, почему. Я думал, что если я удалю let self = this и изменит self ? this.setState(newState) : this.setState(newState) на this.setState(newState), это будет работать. Но это не так.

Может кто-нибудь объяснить мне, что здесь происходит? ??♀️

1 Ответ

0 голосов
/ 01 мая 2020

Можете ли вы попробовать, не передавая себя, и сделать setState с помощью this.setState({ newState )}, потому что, поскольку мы используем this, на самом деле нет никакой точки доступа к self.

...