【发布时间】:2021-04-09 20:01:33
【问题描述】:
我正在尝试创建一个可以在整个应用程序中使用的 axios 实例。我使用 Vuex 商店在 Vue 中使用了相同的模式,但不确定如何在 React 中执行此操作。我有一个用于 AuthContext 的 AuthProvider,并且想在创建 axios 实例时使用 useContext,但我收到一个错误,即我无法在组件之外使用 useContext。
实现这一目标的最佳方法是什么?我在 AuthContext 中有我想使用的用户和注销功能,但这种模式可能不适合 React。
import React, { useContext } from "react";
import axios from 'axios'
import { AuthContext } from "./AuthProvider";
import { getEnvironment } from "./environment";
const env = getEnvironment();
const { user, logout } = useContext(AuthContext);
const instance = axios.create();
instance.defaults.baseURL = env.apiUrl;
instance.defaults.headers.common['Authorization'] = `Bearer ${user.token}`;
instance.interceptors.response.use(function (response) {
return response
}, function (error) {
if (typeof error.response === 'undefined' || [401, 419].includes(error.response.status)) {
logout();
}
return Promise.reject(error)
})
export default instance;
【问题讨论】:
标签: reactjs react-native axios