Redux Middleware выполняет действие без следующего вызова - PullRequest
0 голосов
/ 10 января 2019

У меня есть приложение, которое использует accessToken + refreshToken для использования API. Я хотел добавить промежуточное программное обеспечение, чтобы проверить accessToken и обновить его, если необходимо, перед выполнением вызова API.

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

Вот мое промежуточное ПО:

const requestMiddleware = store => next => action => {
  const {user, accessToken} = loadStorage();
  const payload = jwtDecoder(accessToken.access_token);
  const refreshThreshold = (Date.now() + 1000) / 1000;
  if(accessToken.refresh_token && refreshThreshold > payload.exp){
    // Here we defined that we need to refresh the token
    userConnexion.refresh(user.uuid, accessToken.refresh_token)
        .then((accessToken) => {
            // Token updated we can now run the next action
            return next(action);
          }, (error) => {
              // Error on token refresh we throw an error
              return Promise.reject(error.response.data.message);
          });
}else{
    // AccessToken is still valid so we continue with the next action
    return next(action);
}

}

Например, если я отправляю действие USER_UPDATE, оно вызывает действие, даже если я не запускаю send любое следующее действие.

Мне кажется, что я что-то упускаю в промежуточном программном обеспечении для редуксов, но я не могу понять, что это такое.

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

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 10 января 2019

Я наконец-то узнал, как исправить мою проблему. Кажется, мне нужно применить свое промежуточное программное обеспечение перед промежуточным промежуточным ПО.

...