#vue.js #vuex
#vue.js #vuex
Вопрос:
Я новичок в Vue. Есть ли правильный или неправильный способ зафиксировать изменение состояния? Оба приведенных ниже примера работают, поэтому я пытаюсь понять, почему / когда использовать один поверх другого?
import state from "../store/index";
state.commit('someMutation', data);
И если состояние не импортировано, это работает следующим образом:
this.$store.commit("someMutation", data);
Комментарии:
1. я думаю, что this.$store.commit («someMutation», данные); лучше не нужно импортировать состояние везде, где вы хотите его использовать
2. Вы должны импортировать, если хотите использовать хранилище до монтирования vue или из служебных функций, отдельных от ваших компонентов vue (я бы сказал, довольно распространенных). Я также
this.$store
почти полностью избегаю этого, потому что я думаюmapActions
, что фиксация из actions более чистая. (Итак, в основном то, что сказал Ноа Шталь) Но я также не думаю, что на этом стоит слишком зацикливаться. Наконец, вы импортируете сюда хранилище , а не состояние . Я знаю, что это тривиально, но именование имеет значение.
Ответ №1:
Необязательно существует «неправильный» способ изменения состояния, но при использовании компонентов from лучше всего использовать документы в качестве подсказки, используя $store.commit или отправляя действия.
Я всегда использую действия, поскольку они могут быть асинхронными, набираться на Typescript и скрывать любые сложности, связанные с изменениями состояния моих компонентов.