使用 AsyncStorage 中的令牌创建 Axios 实例

Pav*_*ndu 7 async-await react-native asyncstorage axios

在我的 React Native App 中,我想创建一个 Axios 实例,以使用从AsyncStorage. 但是,以下Token()始终返回一个对象( Promise )而不是实际令牌,因此“授权”标头类似于[Object object].

import axios from 'react-native-axios'
import AsyncStorage from "@react-native-community/async-storage"

const Token = async () => {
    try {
      await AsyncStorage.getItem("token").then(
        token => token
      );
    } catch (error) {
      return null;
    }
  }

export default axios.create({
      baseURL: 'http://192.168.1.100:8080/api',
      headers: {
        'Authorization': 'Bearer '+ Token(),
        'Content-Type': 'application/json'
      }
}) 
Run Code Online (Sandbox Code Playgroud)

如何获取实际令牌并在 axios 实例中使用它?

Pav*_*ndu 21

以下是我设法解决问题的方法。

正如@Prithwee 所说,我决定使用 axios(not react-native-axios) 拦截器并在App.js中进行如下设置。

import React, {Component} from 'react';
import DrawerNavigator from './Utils/DrawerNavigator'
import {
  createAppContainer
} from 'react-navigation';
import axios from 'axios'
import AsyncStorage from "@react-native-community/async-storage"

axios.defaults.baseURL='http://192.168.1.100:8080/api'

axios.interceptors.request.use(
  async config => {
    const token = await AsyncStorage.getItem('token')
    if (token) {
      config.headers.Authorization = "Bearer "+token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
);

const App = createAppContainer(DrawerNavigator);

export default App;
Run Code Online (Sandbox Code Playgroud)