Заполнение хранилища ngrx данными, совместно используемыми между маршрутами

У меня многостраничная форма, охватывающая несколько маршрутов. Для всех маршрутов требуются одни и те же данные, передаваемые им через API. Я могу сохранить ответ API внутри ngrx/store и вызвать вызов API с помощью эффекта. Мой вопрос больше о том, где инициировать вызов API. Вызов API должен быть выполнен после аутентификации пользователя, что происходит на самом первом выбранном мной маршруте (до того, как будет посещена первая часть многостраничной формы). Я придумал два варианта:

  1. Запуск эффекта внутри каждого компонента маршрута означает, что мне просто нужно будет запрашивать информацию каждый раз, когда я посещаю маршрут. Охранник предотвратит доступ ко всем страницам, пока пользователь не аутентифицирован.

  2. Прослушайте успешное действие с аутентификацией внутри эффекта и сделайте там запрос к API.

Я уверен, что оба варианта вполне приемлемы и имеют свои компромиссы. Было бы хорошо узнать несколько мнений!


person Thomas Maddocks    schedule 05.06.2017    source источник


Ответы (1)


Второе было бы лучшим, запрашивая информацию по запросу, когда пользователь аутентифицирован и ему разрешено использовать его, имеет больше смысла. Внутри охранника, как вы сказали, вы должны отправить действие для загрузки информации, прежде чем вы вернете true / of (true), чтобы сигнализировать, что маршрут может быть активирован. Наивный подход к этому приведет к запуску информационного запроса каждый раз, когда вы пытаетесь активировать защищенный маршрут.

person Jota.Toledo    schedule 05.06.2017
comment
Я был на стороне второго варианта. Кроме того, пока данные загружаются, не могли бы вы предложить использовать охрану для ожидания перед активацией маршрута или просто проверить, загружается ли API внутри каждого компонента маршрута и отображать счетчик или что-то в этом роде? - person Thomas Maddocks; 06.06.2017
comment
Обычно я просто показываю счетчик, пока информация помечена как loading: true внутри моего магазина. На мой взгляд, это близко связано с функциональностью / характеристиками / отношением к информации, которую визуализируемый компонент имеет с запрошенной информацией. - person Jota.Toledo; 06.06.2017