Я хотел бы знать, как использовать навигацию в функции, которая не входит в компонент реакции.
В моем приложении-адаптере есть функция выборки.Я использую его для всех вызовов API.
Когда я звоню своему API, я хочу перенаправить пользователя на страницу подключения, если его токен больше не действителен.Как я могу использовать навигацию в этой пользовательской функции выборки?Обратите внимание, что функция не входит и не находится в реагирующем компоненте
import { SubmissionError } from 'redux-form';
import { API_HOST, API_PATH } from './_entrypoint';
import {debuglog} from "../Components/config/_entrypoint";
import { AsyncStorage } from 'react-native';
const jsonLdMimeType = 'application/ld+json';
export default async function (url, options = {}) {
if ('undefined' === typeof options.headers) options.headers = new Headers();
if (null === options.headers.get('Accept')) options.headers.set('Accept', jsonLdMimeType);
if ('undefined' !== options.body && !(options.body instanceof FormData) && null === options.headers.get('Content-Type')) {
options.headers.set('Content-Type', jsonLdMimeType);
}
const link = url.includes(API_PATH) ? API_HOST + url : API_HOST + API_PATH + url;
var userToken = await AsyncStorage.getItem('userToken')
if(userToken){
var bearer = 'Bearer '+ userToken;
options.headers.set('Authorization', bearer)
return fetch(link, options).then(response => {
if (response.ok) return response;
return response
.json()
.then(json => {
{/* If the user token is not valid redirect to login page */}
const error = json['hydra:description'] || response.statusText;
if (!json.violations) throw Error(error);
let errors = {_error: error};
json.violations.map((violation) => errors[violation.propertyPath] = violation.message);
throw new SubmissionError(errors);
});
});
}
}