Как правильно построить приложение на vue?

Собственно, суть в том, что с сервера приходят 2 массива. Первый - массив клиентов в виде объектов. Второй - массив ключей (тоже в виде объектов), которые им принадлежат. Их надо вывести в таблице с раскладывающимися строками (в самой строке инфа про клиентов, в её "раскладной" части список их ключей). Таблица реализована как отдельный компонент. Но данные приходят в неподнохящем для неё виде, их нужно сформировать в один массив клиентов, где укаждого объекта клиента будет св-во expanded с массивом ключей. Собственно вопросы:

Где лучше и правильнее всего получать эти массивы клиентов и их ключей. В хранилище, в представлении страницы или в отдельном сервисе?
И где выполнять их "склейку"?
Где производить запрос на сервер с измененными данными из таблицы (таблица эммитит ивент изменения строки и подстроки)?
Правильно ли вообще писать методы в компоненте страницы (src/views в шаблоне)?
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 1
AlexeyCaTHaR
@AlexeyCaTHaR
Я бы реализовал получение данных только на той странице\компоненте где они необходимы. И в зависимости от этого было бы понятно, по какому-то событию на странице или в хуке необходимо получать данные.

Получение реализовал бы через action в хранилище. Что-то типа такого:
getClients ({ commit, dispatch }) {
    commit('setLoading', true) // preloader
    api.getClients ()
      .then((clients) => {
        commit('setClients', clients)
        dispatch('getKeys')
      })
      .finally(() => {
        commit('setLoading', false)
      })
  },
getKeys({ commit }) {
    commit('setLoading', true)
    api.getKeys()
      .then((keys) => {
        commit('setKeys', keys)
      })
      .finally(() => {
        commit('setLoading', false)
      })
  }

Соответственно на странице\компоненте вызывался только бы dispatch('getClients ').
А вот получение ключей каждого клиента в разворачиваемую область можно через computed реализовать. И не обязательно загружать будет все ключи, пока кто-то не развернул блок.

P.S> это всё только моё имхо на текущий момент
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
PLATFORM Тюмень
от 100 000 до 150 000 ₽
от 80 000 до 120 000 ₽
ДП-Экспресс Санкт-Петербург
от 130 000 до 200 000 ₽
27 янв. 2021, в 20:47
30000 руб./за проект
27 янв. 2021, в 20:38
1000 руб./за проект
27 янв. 2021, в 20:26
1600 руб./за проект