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