Лучшая практика для одновременных действий Redux API - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть действие, редуктор и служба для какого-либо ресурса.

Предположим, что в этом случае ресурс представляет собой корзину, из которой пользователь может иметь несколько значений.

У меня есть следующие методы, getCartInformation, getCarts, getCartCount. И у меня есть следующие API, fetchCartInformation, fetchCarts, fetchCartCount.

getCarts возвращает идентификаторы корзины, которые необходимы для getCartInformation и getCartCount

. вопрос в том, что бы вы сделали, чтобы избежать нескольких fetchCarts вызовов API, когда вы вызываете getCartInformation или getCartCount в качестве побочного эффекта

  • Вы бы расширили библиотеку API с помощью fromCache флаг, чтобы fetch*** имел эту доступную опцию.
  • Вы бы установили счетчик в библиотеке API "вызовов при запросе конечной точки", а затем просто повторно вызвали бы вызывающие функции функции?
  • Вы бы добавили проверку действия, чтобы увидеть, есть ли у getState корзина, и если нет, запросите и повторно запустите функцию (может иметь 2 или более одновременных вызова одновременно для медленного конечная точка)?

Давайте теперь предположим, что несколько компонентов могут инициировать вызов getCartCount, иногда вы хотите вызвать конечную точку, когда компонент появляется на странице, а иногда все они вызываются при инициализации приложение стало SE компоненты все добавляются. В этом случае это вызовет конечные точки getCarts и getCartCount довольно пару раз.

  • Есть ли какой-то "избыточный способ", чтобы поймать, что есть несколько вызовов одного метода перед оно уже разрешено?
  • Вы бы установили счетчик вызовов для действия getCarts?
  • Сделали бы вы, чтобы действие getCartCount зависело от ответа getCarts и дали проверка действия getCarts?

Я знаю, что это довольно сложный и длинный вопрос, но если вам нужно больше или меньше деталей, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 07 февраля 2020
  1. Я не понимаю, почему вы должны звонить getCarts всякий раз, когда вы звоните getCartInformation. Типичный случай использования: (1) пользователь видит список карточек (по getCards) и (2) пользователь нажимает на одну из них и видит информацию о карточке (по getCartInformation с идентификатором выбранной карточки). Похоже, вам не нужно вызывать getCards еще раз.

  2. Обычно список карт делится на страницы. Таким образом, у вас всегда есть поля start, offset, total в качестве служебных полей при каждом вызове getCards, поэтому вам вообще не нужно getCartsCount.

  3. Когда Я применил любой тип кэша, для меня было разумным сделать его прозрачным для Redux, то есть действие Redux выполняет вызов API обычным способом, и уровень API решает (под капотом), отправлять ли он настоящий ajax вызов или возвращать данные из кеша.

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