Неавторизованный пользователь при ответе 401 (с использованием контекста) в React NativeJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 Неавторизованный пользователь при ответе 401 (с использованием контекста) в React Native

Сообщение Гость »


У меня было старое приложение, которое я рефакторингую и исправляю. Поток потребовал от меня изменить использование AsyncStorage на AuthProvider с контекстом для пользовательской сущности. Итак, у меня есть хук useAuth, где находится процесс аутентификации, и я держу пользователя в контексте. Кроме того, у меня есть класс WebService, который содержит множество функций для API:

async post(url, body, метод = 'POST') { пытаться { const ответ = ожидание выборки (urlApi + URL, { метод: метод, заголовки: ожидайте this.header(), тело: JSON.stringify(тело), перенаправление: «следовать» }); const json = ожидайте ответа.json(); если (response.status === 401) { await (новое хранилище).remove('пользователь') .then((статус) => { если (статус) { перезагрузить({ индекс: 0, маршруты: [{имя: 'Логин'}] }); } }); } вернуть JSON; } поймать (ошибка) { console.log('WS POST', ошибка); } } ... асинхронный editMessage (идентификатор, сообщение) { return await this.post('bulletin-messages/' + id, { message }, 'PUT'); } ... Раньше пользователь находился в хранилище, но теперь он находится в контексте. Все, что мне нужно изменить внутри if (response.status === 401) { ... что-то вроде setUser(null), но я не могу использовать свой перехват useAuth (с функцией updateUser()), поскольку WebService не является компонентом. Обработка перехватчиков после каждого использования моей функции в компонентах будет странной, что мне делать?

Я думал о том, чтобы заменить WebService на перехватчик, но только что понял, что использование перехватчиков внутри перехватчиков тоже неправильно.

Еще одно решение, которое может сработать, — это сокращение, но пока не уверен, сработает ли оно, и, честно говоря, предпочел бы выйти из контекста
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»