Использование классов ES6 в качестве состояния хранилища vuex в Nuxt - PullRequest
1 голос
/ 05 мая 2020

Когда я установил класс ES6 в состояние в моем хранилище vuex в nuxt, я получил следующее предупреждение:

 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));

1 Ответ

1 голос
/ 05 мая 2020

Как обсуждается в комментарии, добавьте метод toJSON в класс, чтобы решить проблему при установке состояния на клиенте, но при установке состояния на сервере состояния станут undefined. поэтому добавление этого кода решает проблему:

    toJSON() {
        return Object.getOwnPropertyNames(this).reduce((a, b) => {
            a[b] = this[b];
            return a;
        }, {});
    }
...