javascript - 如何在 Typescript 中导出 Axios.create
问题描述
我有这个工作:
export default axios.create({
baseURL: 'sample',
headers: {
'Content-Type': 'application/json',
},
transformRequest: [
(data) => {
return JSON.stringify(data);
},
],
});
但问题是一旦我编辑成这样:
const API = () => {
const token = 'sample'
const api: AxiosInstance = axios.create({
baseURL: 'http://localhost:5000',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
transformRequest: [
(data) => {
return JSON.stringify(data);
},
],
transformResponse: [
(data) => {
return JSON.parse(data);
},
],
});
return api;
};
export default API;
我希望它是一个箭头函数,这样我就可以访问函数内部的令牌。
问题是一旦我开始导入箭头函数,它会产生一个错误,不读取 POST 方法
import API from 'apis';
API.post
有没有办法像箭头函数一样实现它,但不会丢失类型定义或产生错误?
解决方案
您不会丢失任何类型定义,但您没有将导入用作函数。
如果你写API().post
它会工作。
我建议执行以下操作:
import axios from 'axios';
const api = axios.create({
baseURL: 'http://localhost:5000',
headers: {
'Content-Type': 'application/json',
},
transformRequest: [
(data) => {
return JSON.stringify(data);
},
],
transformResponse: [
(data) => {
return JSON.parse(data);
},
],
});
import store from '../store'
const listener = () => {
const token = store.getState().token
api.defaults.headers.common['Authorization'] = token;
}
store.subscribe(listener)
export default api;
您也可以在此处访问令牌。
推荐阅读
- ios - 如何为 UINavigationBar 的后退按钮创建阴影?
- android - 如何使用 Android Studio 将数据从 Raspberry pi 发送到 Google Cloud IoT Core?
- java - yml 文件中的属性值未加载到 springboot 项目中的类中
- python - 改变形状并随机排列一个数组
- shell - Shell - 用户列的总和
- emacs - Emacs 25.0.50 中的递归加载
- go - Run 的输出耗时过长
- c# - 在图像控件 WPF 中显示 UIelement(Visual) 的渲染图像
- yii - Yii2控制器允许所有人访问
- c++ - Vector 似乎会根据使用位置改变类型