Как настроить асинхронные процессы с Vuex в любом конкретном порядке - PullRequest
0 голосов
/ 26 апреля 2018

Сначала давайте разберемся с приложением:

  1. В примере приложения выполняется сбор данных из 2 источников: массив доступных объектов и массив используемых объектов.
  2. Приложение также отображает новые объекты (доступные не используются).
  3. Наконец, он также позволяет использовать (зарегистрировать) один из новых объектов

Требования:

  • Приложению необходимо сначала отобразить список новых объектов
  • Приложению необходимо свести к минимуму количество вызовов API до минимума и совершать вызовы только в случае крайней необходимости
  • Вызовы для внесения изменений в данные API (регистр) должны реагировать и немедленно отображать изменения в пользовательском интерфейсе

Код, который я реализовал , соответствует этим 3 требованиям. Тем не менее, я действительно недоволен этой реализацией, и я уверен, что это не способ, которым предполагается использовать хранилище Vuex.

Для начала, моя реализация работает только для определенного порядка, в котором компоненты отображаются на экране:

<new name="New" :selected="true"></new>
<available name="Available"></available>
<using name="Using"></using>

Если я, например, захочу переместить <available> на последнюю вкладку, код сломается.

Это происходит потому, что я не смог просто позвонить dispatch('getNews') один раз и заставить все остальное встать на свои места, не дублируя при этом один или несколько вызовов API, и, следовательно, не отвечая требованиям ...
Я пытался использовать dispatch('...').then().then(), но мне не удалось заставить его работать и соответствовать требованиям.

Я был бы очень признателен всем, кто имел опыт работы в аналогичных ситуациях с Vuex, и скажите, как они это делают. Бонус, если вы можете сделать это без добавления дополнительных мутаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...