Vuex: вызов геттеров от действия - PullRequest
0 голосов
/ 28 августа 2018

Есть ли способ для отправки / действия вызвать вызывающего внутри него?

mutations: {
    setData(state, data) {
        state.data = data;
    }
}
actions: {
    sendDataToServer({ commit }, payload) {
        // call getter (data) and assign to variable
        // do async functions from the data returned
    }
},
getters: {
    getAppData: state => () => {
        return state.data;
    }
}

Так какая же здесь лучшая практика? Использование мутации для изменения состояния, а затем получения состояния и передачи его действию, которое затем выполнит асинхронную функцию или мне нужно реструктурировать мою реализацию?

мутация вызова -> получить данные через геттер -> действие вызова

OR

сделать все это в действии (выполнить мутацию в действии и выполнить метод action / async без использования метода получения)?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

В дополнение к фиксации, у действий есть внедренные параметры по умолчанию, которые dispatch, getters и rootGetters. Так что вы можете просто написать;

sendDataToServer({ commit, getters }, payload) для доступа к получателям.

0 голосов
/ 28 августа 2018

В действии вы видите, что первый параметр содержит {commit}. Точно так же вы можете передать {commit, state}. Таким образом, вы можете получить прямой доступ к state.data.

Я думаю, что в вашем примере вы хотели бы выполнить действие, потому что вы можете вызвать мутацию изнутри самого действия, используя commit('setData').

Первый параметр позволяет вам использовать состояние и мутацию по своему усмотрению. Лично я работал только над проектами, в которых вы сначала выполняете действие и делаете мутации, чтобы сохранить его в приложении. Например, если я хочу где-то хранить информацию об автомобиле на сервере, сначала я должен выполнить действие (и сохранить его в удаленной базе данных). Как только я подтверждаю, что он сохранен в БД, я локально мутирую в магазине. Это полностью зависит от каждого конкретного случая. Но хорошо, что вы можете мутировать изнутри действия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...