Какой правильный способ инициализации момента с помощью Vue?

1

Я использую хранилище Vuex, но я думаю, что этот вопрос все равно будет применяться, если вы не используете магазин.

Согласно документации Vue, правильным способом установки нескольких свойств объекта является использование Object.assign() и создание нового объекта.

export default {
    state: { 
        eventDateMoment : {}  
    },
    mutations : { 
        initialiseDate(state, payload) {
            state.eventDateMoment = Object.assign({}, state.eventDateMoment, moment(payload.eventDate, 'YYYY-MM-DD'));
        }      
    }
}

Насколько я могу видеть, это копирует только поля. Он не копирует методы. Итак, как мне хранить объект, который включает методы?

Я нашел два подхода, которые, похоже, работают, но я им не доверяю, поскольку они противоречат правилам, изложенным в документации Vue. Я сомневаюсь, что они будут вести себя как отзывчивое имущество при любых обстоятельствах.

Первый подход - просто переназначить свойство в мутаторе.

mutations : { 
    initialiseDate(state, payload) {
        state.eventDateMoment = moment(payload.eventDate, 'YYYY-MM-DD'));
    }
}

Второй подход - установить начальное значение хранилища на мгновенный объект, а затем использовать Object.assign для слияния новых свойств без создания нового объекта.

export default {
    state: { 
        eventDateMoment : moment()  
    },
    mutations : { 
        initialiseDate(state, payload) {
            state.eventDateMoment = Object.assign(state.eventDateMoment, moment(payload.eventDate, 'YYYY-MM-DD'));
        }
    }
}

Насколько я вижу, ни одно из них не является приемлемым. Итак, каков правильный способ хранения объекта с помощью методов?

  • 0
    Возможно ли, что вы могли бы создать класс и затем назначить новый объект вашему состоянию магазина?
Теги:
vuejs2
vuex
momentjs

1 ответ

0

Ваш подход с привязкой выглядит хорошо, он гарантирует, что все основные методы и свойства экземпляра момента присутствуют и переопределяют их в мутации, это нормально. Не переоценивайте Object.assign -method, метод Vue.set более рекомендуется, как вы можете видеть в документации здесь. Vuex docs, устанавливающий начальный моментный объект в состоянии, использует метод Vue.set под капотом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню