AlexeyCaTHaR
@AlexeyCaTHaR

Vuex best practies или как правильно делать?

Есть state с неким набором свойств:

prop1: 0,
prop2: "",
prop3: [],

Каким образом лучше изменять значения?
  • В одной мутации, которая меняет все поля state
  • Для каждого свойства отдельная мутация


И вопрос по валидации данных:
  1. Валидировать в месте ввода(компонент) и дальше через dispatch вызывать action
  2. Валидировать в action и дальше мутацией обновлять
  3. Валидировать непосредственно в мутации


Где можно почитать, как правильно делать?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
Kozack
@Kozack
Thinking about a11y
Все данные в state должны быть логически разделены на модули. Все комиты тоже должны быть логически разделены внутри каждого модуля. Лично я предпочитаю вообще не создавать корневого хранилища — всё в подмодулях.

Что касается валидации, то Aetae всё верно написал.

Лично я использую следующий подход. Он не лучший, и не всегда подходящий.
— Все компоненты вызывают только action
— Комиты вызываются только внутрии action после всех проверок и валидаций.
— Все комиты расчитаны на получение заведомо корректных данных.

Таким образом:
мутация — низкоуровневый инструмент для управления хранилищем.
action — высокоуровневый менеджер по управлению хранилищем, который проверяет все данные, выполняет любые дополнительные манипуляции, преобразования, разбивает большие данные на части если это нужно и так далее, и только потом уже готовые данные передаёт в мутацию.
компонент — пользователь хранилища. Которые не вызывает мутации напрямую, а вызывает только action. И в исключительных случаях может получить прямой доступ к хранилищу в обход любых проверок и изменений вызвав напрямую мутацию.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae
Тлен
Всё должно быть в рамках логического, а не технического деления, это не только Vue касается.
Если вы валидируете ввод - это часть ввода и никакого отношения к состоянию не имеет. Если вы валидируете сторонние данные - это часть "получения сторонних данных" и т.д.
Также и с изменением состояния - если одна логическая операция требует изменений нескольких элементов состояния то и выполняться она должна одной операцией.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы