Реагируй на натив с потоком данных Redux - PullRequest
0 голосов
/ 30 мая 2018

Недавно я столкнулся с проблемой с React Native и Redux при реализации OAuth, которая вызвала некоторое головокружение.Сценарий выглядит следующим образом:

  • Я использую Redux в своем приложении React Native
  • Пользователь входит в систему, а токен обновления и токен доступа сохраняются.
  • Inсоздатель действия для другого компонента, пользователь должен вызвать конечную точку покоя с токеном кратковременного доступа.
  • Однако для каждого вызова пользователю необходимо вызвать метод службы, такой как getAccessToken(), который всегда будет возвращатьдействительный токен доступа, и если токены истекают, он обновляет их и обновляет хранилище.

Поток данных в Redux строго однонаправлен , то есть пользователь вызываетсоздатель действия, который, в свою очередь, вызовет редуктор, который изменит состояние в хранилище, и компонент будет повторно визуализирован с новым состоянием.Однако я не могу связать состояние моего компонента с токеном доступа;каждый раз, когда пользователь хочет сделать вызов Rest, он должен позвонить getAccessToken(), чтобы убедиться, что он получает действительный токен перед отправкой.

Есть предложения о том, как реализовать это, используя React Native и Redux ?Спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Как это сделать по-своему:

  1. Вызов getAccessToken().then(token => myOtherCall(token))
  2. После успешного вызова второго выполните два действия, одно с соответствующим редуктором с результатом, а другоесохранение нового токена.

Как бы я это сделал:

Используя redux-saga , я бы настроил цикл, который обновляет токен каждые X секунд.Если запрос не выполняется из-за кода состояния 401, я обновил бы токен и повторил бы вызов API.

...