Как использовать «навигацию» в функции - PullRequest
0 голосов
/ 13 февраля 2019

Я хотел бы знать, как использовать навигацию в функции, которая не входит в компонент реакции.

В моем приложении-адаптере есть функция выборки.Я использую его для всех вызовов 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);
            });
    });
}

}

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