vuejs Выполнение dispatch

294
29 января 2018, 07:42

Как правильно будет выполнить dispatch action модуля склада?

В модулe склада laboratory.js получаю данные из БД и сохраняю в переменную модуля.

import Vue from 'vue';
export default {
    namespaced: true,
    state: {
        laboratories: null,
    },
    getters: {
        getLaboratories(state){
            return state.laboratories;
        },
    },
    mutations: {
        loadLaboratories(state, data){
            state.laboratories = data;
        }
    },
    actions: {
        loadLaboratories(store){
            // store.commit('clearLaboratory');
            Vue.http.get('laboratories')
                .then(response => response.json())
                .then(data => {
                    store.commit('loadLaboratories', data);
                });
        },
    }
};

В главном файле склада подключаю модуль

import laboratory from './modules/laboratory';
export const store = new Vuex.Store({
    modules: {
        laboratory,
    },
...

Теперь я хочу вызвать action loadLaboratories в одном из компонентов. Можно вызвать напрямую, если в модуле корзины прописать import Vue from 'vue';

this.$store.dispatch('laboratory/loadLaboratories');

Или же следует в компоненте сделать как-то так (смотри ниже).

import {mapActions} from 'vuex';
export default {
    methods: {
        ...mapActions('laboratory', {
            loadLaboratories: 'loadLaboratories',
        })
    },
...

И потом вызвать выполнение строкой this.loadLaboratories();?

Как правильно? И ещё вопрос - как следует именовать методы в state, getters, mutations, actions и переменные внутри модулей? Например, в моё случае из БД я буду получать laboratories (их будет несколько). Значит нужно всё именовать во множественном числе? Или в единственном?

Answer 1

Как правильно будет выполнить dispatch action модуля склада?

Оба примеры правильны.

 this.$store.dispatch('laboratory/loadLaboratories');

используется для импорта одной функции.

mapActions - это всего лишь helper который упрощает экспорт множества функций. Например если у вас 2 и более функции которые надо сделать доступными в компоненте то удобнее использовать:

...mapActions['method1', 'method2', 'method3'] 

как следует именовать методы в state, getters, mutations, actions и переменные внутри модулей?

Вы можете как использовать множественное число для описания методов, так и нейтральные названия такие как getAll, getById, set, save etc. при использовании namespase "laboratory" все будет не менее понятно.

READ ALSO
Смена видимости по переключению radio button

Смена видимости по переключению radio button

Кароче надо сделать что бы при выборе одного показывалось одно содержимое, при выборе другого, другое содержимоеВ первом случае инпуты для...

192
Как строится DOM JavaScript?

Как строится DOM JavaScript?

Вообще не понимаю как этот DOM строится, пытаюсь на простом сайте запарсить данные и то не получаетсявот исохдные данные

245
Продуктивное обучение

Продуктивное обучение

Здравствуйте, уважаемые форумчанеРешил попробовать себя в вебе, начал изучать html/css, webref,htmlacademy, видосы в ютубе, вроде смотришь и все понимаешь,...

193