Это неправильно "... действия - это единственные процессы, которые манипулируют значениями магазина".
Единственный способ действительно изменить состояние в хранилище Vuex - это зафиксировать мутацию.
Действия могут зафиксировать мутации, если это необходимо:
actions: {
increment ({ commit }) {
commit('increment')
}
}
Мы также можем зафиксировать мутации из компонента, если это необходимо:
this.$store.commit('increment')
Чтобы ответить на ваш вопрос: Да, вы всегда должны фиксировать мутацию (использовать мутации), если необходимо изменить состояние (я).С учетом вышесказанного, я не думаю, что vuex остановит вас от изменения состояния непосредственно из действий, но это не лучшая практика.Даже не лучшая практика, вы используете магазин Vuex неправильно.Кроме того, вы потеряете преимущество отслеживания, где меняются все состояния (что является причиной возникновения мутаций).
Действия используются исключительно для бизнес-логики (вычисления), асинхронных вызовов (действия не имеютсодержать асинхронные вызовы) и совершать мутации (при необходимости).Мутации используются исключительно для изменения состояний (в мутациях не должно быть логики).
В приведенном вами примере resetToZero
не имеет логики и только изменяет состояния.Это неправильное использование магазина vuex.Таким образом, вам нужно перейти resetToZero
к мутациям.И в любое время, когда вам нужно resetToZero
, вам нужно commit('resetToZero')
.
Этот пост может вам помочь: Vuex Action против мутаций