Обработка несанкционированного кода 401 с помощью реакции-роутера - PullRequest
1 голос
/ 01 июля 2019

Я обертываю некоторые компоненты функцией для обработки ошибок, давайте назовем это: wrapError.

Вот несколько важных моментов:

  • Некоторые компоненты вызывают конечные точки для получения информации.
  • Я использую реагирующий маршрутизатор

Все отлично работает, но здесь у нас есть крайний случай:

Когда срок действия токена доступа пользователя истекает, пользователь может щелкнуть и перейти на другую страницу (компонент), и новый компонент попытается вызвать его конечную точку, тогда, поскольку токен недействителен, мы получим ошибку 401, наконец, помните, что у нас есть wrapError, который будет обрабатывать этот код Ошибка.

Эта ошибка обрабатывается с помощью push (перевод на страницу ошибки 401) из react-router, но push является асинхронным, поэтому на мгновение код компонентов продолжает работать и выдает ошибки в консоли.

Знаете ли вы, как я могу остановить поток и перенаправить на экран 401?

function wrapError(callback, errorCode = 401) {
  return callback.catch(e => {
    if (errorCode === error.statusCode) {
      // delete access token

      history.push("/my401page");
... etc 

Ошибка:

TypeError: Cannot read property 'variable' of undefined...

Потому что в этот момент конечная точка возвращает undefined.

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