Здравствуйте.
Сейчас разрабатываю приложение на vue, которое работает с несколькими сущностями на одной странице. Например, есть страница заказ, при ее открытии с бэка подтягивается по 3м разным запросам информация о заказе, информация о доставке и информация о списке товаров. Запросы отправляются и приходят независимо друг от друга. Для каждого запроса есть своя булевая переменная, которая показывается состояние запроса(isLoading, который на данный момент хранится локально в родительском компоненте, а не в сторе). Методы для дергания этих запросов хранятся в 3х разных модулях Vuex, там же хранятся приходящие данные.
Теперь основная проблема. На странице заказа есть несколько опять таки независимых компонентов, в каждом из которых могут использоваться или изменяться данные из ответа любого из 3х основных запросов (заказ, доставка, товары). Таких компонентов много и они могут быть вложены друг в друга на несколько уровней. Соответственно нужно каким-то оптимальным образом передавать внутрь этих компонентов данные, а также сохранять их изменения. Я вижу 3 варианта:
- прокидывать все пропсами, и допускать мутации в полях объекта - плохо, но будет работать + очень просто в реализации, но тк вложенность компонентов может быть большая, то выглядеть будет это не слишком красиво
- прокидывать пропсами + изменять через emit - хорошо, но много кода с постоянными слушателями и тд
- отказаться от пропсов и сделать все через vuex, в компонентах, где данные будут меняться, обозначать computed с set и get методами, которые будут вызывать мутации в сторе и выводить данные из стора - звучит хорошо, но опять таки достаточно громоздко будет выглядеть.
Из всего вышесказанного появляется вопрос, какой способ для обмена данными выбрать и какие способы, которые имеют место быть, я не описал