将ES6类用作Nuxt中的vuex存储状态

问题描述 投票:0回答:1

当我设置ES6 class以在nuxt中的vuex存储上声明时,我得到以下警告:

 WARN  Cannot stringify arbitrary non-POJOs EndPoint

并且当我使用对象作为状态时,没有任何警告。

所以如何在我的状态下使用ES6类

我的模特:

export default class EndPoint {
    constructor(newEndPoints) {
        this.login = newEndPoints.login;
        this.status = newEndPoints.status;
    }
}

并在此处更改状态:

commit(CoreMutations.SET_ENDPOINTS, new EndPoint(response.data));

使用对象:

const EndPoint = {
    endPoints(newEndPoints) {
        return {
            login: newEndPoints.login,
            status: newEndPoints.status
        };
    }
};

并变异:

commit(CoreMutations.SET_ENDPOINTS, EndPoint.endPoints(response.data));
javascript vue.js vuex nuxt.js es6-class
1个回答
0
投票

作为注释中的讨论,在类中添加toJSON方法解决了在客户端中设置状态时的问题,但是在服务器中设置状态时,状态将变为undefined。因此添加此代码即可解决问题:

    toJSON() {
        return Object.getOwnPropertyNames(this).reduce((a, b) => {
            a[b] = this[b];
            return a;
        }, {});
    }
© www.soinside.com 2019 - 2024. All rights reserved.