добавить новую пару ключ-значение к пустым объектам - PullRequest
1 голос
/ 11 апреля 2019

Вот мой магазин mobx, который я пытаюсь использовать в приложениях реагирования:

import {observable, computed, action, decorate} from 'mobx';

class Cart {
    cart = 0;
    product = {};
    loaded = false;


    addCart(product, amount) {
        if(this.product === null) {
            this.product[product] = Number(amount);
        } else {
            if (product in this.product) {
                this.product[product] = this.product[product] + Number(amount);
            } else {
                this.product[product] = Number(amount);
            }
        }
        localStorage.setItem('product', JSON.stringify(this.product));
        this.cart = this.cart + Number(amount);
    }
}

export default Cart = decorate(Cart, {
    cart: observable,
    product: observable,
    addCart: action
})

когда я пытался добавить некоторые данные из компонента, такие как addCart(4, 1), он выбрасывает TypeError: this.product is null, и в этом блоке отображается ошибка

if(this.product === null) {
   this.product[product] = Number(amount);
} 

1 Ответ

1 голос
/ 11 апреля 2019

Если this.product имеет значение null, вы должны сначала установить его равным пустому массиву, прежде чем назначить элемент массива:

addCart(product, amount) {
    if(this.product === null) {
        this.product = [];  // <-- INSERT THIS LINE HERE
        this.product[product] = Number(amount);
...