Я обертываю некоторые компоненты функцией для обработки ошибок, давайте назовем это: 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
.