Изучаю Vue, и столкнулся с несколькими разными мнениями о том, как правильно строить приложение
Допустим, мне нужно получить данные с сервера, обработать их в цикле и вывести в компоненте. Есть варианты:
1) в экшенах Vuex не должно быть лишнего, только получение данных, затем обработка в компоненте (например, в хуке created) цепочкой промисов или async/ await, затем вызов коммита:
1.1) напрямую из компонента
1.2) через экшн, который просто делает коммит изменений
2) получать данные в экшенах, там же их обрабатывать (либо в другом экшене), там же вызывать коммит. в таком случае код в хуке компонента будет состоять из пары строчек, где вызывается нужный экшн
Дополнительный вопрос - можно ли обрабатывать данные в коммите, или же он должен заниматься исключительно мутацией стора?
Эти варианты я услышал от двух Senior Vue Developer, поэтому думаю один из них все же верный. Так как правильно?
Я считаю что бизнес логика должна быть во Vuex, компонент должен быть чистым, там остается только получить готовые данные из стора и отрисовать, при какой нибудь динамике комитишь в стор, и он снова что-то делает, и компонент перерисовывается.
Из соображений тестируемости — компоненты не должны содержать ни бизнес-логики, ни сетевого кода, экшены должны быть как можно более тупыми, а все самое интересное — в мутациях и геттерах. Так будет проще всего покрывать тестами и дебажить.