@architawr
"Ok, Google" и все твои проблемы решены

Какой оптимальный способ передачи и редактирования данных в Vue приложении?

Здравствуйте.
Сейчас разрабатываю приложение на vue, которое работает с несколькими сущностями на одной странице. Например, есть страница заказ, при ее открытии с бэка подтягивается по 3м разным запросам информация о заказе, информация о доставке и информация о списке товаров. Запросы отправляются и приходят независимо друг от друга. Для каждого запроса есть своя булевая переменная, которая показывается состояние запроса(isLoading, который на данный момент хранится локально в родительском компоненте, а не в сторе). Методы для дергания этих запросов хранятся в 3х разных модулях Vuex, там же хранятся приходящие данные.

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


Из всего вышесказанного появляется вопрос, какой способ для обмена данными выбрать и какие способы, которые имеют место быть, я не описал
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
Nolis
@Nolis
it-гопник
Всё зависит от ситуации. Иногда пропсом прокинуть куда проще, чем писать кучу кода и тянуть данные их хранилища.

Все три мысли вполне адекватные, но очевидно что третий вариант вписывается куда лучше.

Во-первых: ты видишь откуда летят данные, а не бегаешь по компонентам и не ищешь откуда растут ноги.

Во-вторых: если тебе нужно подтянуть десяток данных - ты с ума сойдешь кидаться ими как каллом из компонента в компонент, а вот через хранилище ты можешь не вытягивать всё и сразу, а взять необходимый экшн, гетр, мут и обозвать его.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы