如何在功能中使用“导航”

时间:2019-02-12 22:08:13

标签: react-navigation

我想知道如何在React组件中没有的函数中使用Navigation。

在我的本机应用程序中,我有一个自定义提取功能。我将其用于所有API调用。

当我调用API时,如果用户的令牌不再有效,我希望将其重定向到连接页面。如何在此自定义提取功能中使用导航?请注意,该函数不在和不在React Component中

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);
            });
    });
}

}

0 个答案:

没有答案