javascript - 向空对象添加新键值对抛出 TypeError is null 错误

标签 javascript reactjs mobx

这是我尝试在 React 应用程序中使用的 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 并在此 block 中显示错误

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

最佳答案

如果 this.product 为 null,则必须先将其设置为空数组,然后再分配数组元素:

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

关于javascript - 向空对象添加新键值对抛出 TypeError is null 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624761/

相关文章:

javascript - 简化这个条件语句

javascript - 带有渲染回调函数的 jQuery 数据表问题

javascript - webpack 获取 material-ui 的正确方法

javascript - 如何在 Flux 中正确链接操作 (alt)

javascript - @compated 属性循环检测到错误

javascript - 将分层 JSON 文件转换为分层 jQuery div

javascript - 对象的 React setState 返回 undefined

javascript - 如何创建具有动态返回值的 jest 模拟实现

javascript - MobX 没有在我的类里面正确设置 observable

javascript - 仅调用一次 Controller 功能,两个 div 具有相同的 Controller