React Native с потоком данных Redux

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

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

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

Любые предложения относительно того, как реализовать это с помощью React Native и Redux? Спасибо.

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
0
180
1

Ответы 1

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

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

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

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

Спасибо. Я обязательно загляну в redux-saga. Другой вопрос, будет ли это приемлемым подходом как к отправке, так и к возврату значения от создателя действия? Я не видел, чтобы это делалось раньше, и мне интересно, антипаттерн ли это. Спасибо.

BlackLog 30.05.2018 02:46

Можно отправлять несколько действий в создателе действий, используя redux-thunk github.com/reduxjs/redux-thunk

Alexander Vitanov 30.05.2018 02:47

несколько действий, конечно. как насчет этого: {отправка ({...}); вернуть результат;}

BlackLog 30.05.2018 02:48

В зависимости от вашего конкретного случая - да

Alexander Vitanov 30.05.2018 03:13

Другие вопросы по теме