javascript - 函数 Javascript 外的 const 变量
问题描述
我有多个导出函数来处理 API 请求。我遇到了一些问题。
请在这里阅读我的代码:
export const CreateAPI = (path, dataForm) => {
const loading = document.querySelector('.loading-bar');
loading.classList.add('is-loading');
return Axios.post(`${process.env.REACT_APP_API_SERVER}${path}`, dataForm, {
headers: { 'Content-Type': 'multipart/form-data' }
})
.then(res => {
if (res.status >= 200 && res.status <= 299) {
loading.classList.remove('is-loading');
return res.status
} else {
Promise.reject(res);
}
})
.catch(err => console.log(err));
}
export const ReadAPI = (path, params) => {
const loading = document.querySelector('.loading-bar');
loading.classList.add('is-loading');
return Axios.get(`${process.env.REACT_APP_API_SERVER}${path}${params || ''}`)
.then(res => {
if (res.status >= 200 && res.status <= 299) {
loading.classList.remove('is-loading');
return res.data
} else {
Promise.reject(res);
}
})
.catch(() => {
localStorage.removeItem('jwtToken');
window.location.href = './login';
});
}
如何使任何导出函数的const加载可重用?
解决方案
像这样的东西?顺便说一句,您可以将加载服务提取到单独的文件中。
简单的小提琴来展示这个想法。
https://jsfiddle.net/ramseyfeng/hpaLn9kj/10/
const loading = document.querySelector('.loading-bar');
loading.start = () => {
loading.classList.add('is-loading');
};
loading.stop = () => {
loading.classList.remove('is-loading');
};
export const CreateAPI = (path, dataForm) => {
loading.start();
return Axios.post(`${process.env.REACT_APP_API_SERVER}${path}`, dataForm, {
headers: { 'Content-Type': 'multipart/form-data' }
})
.then(res => {
if (res.status >= 200 && res.status <= 299) {
loading.stop();
return res.status
} else {
Promise.reject(res);
}
})
.catch(err => console.log(err));
}
export const ReadAPI = (path, params) => {
loading.start();
return Axios.get(`${process.env.REACT_APP_API_SERVER}${path}${params || ''}`)
.then(res => {
if (res.status >= 200 && res.status <= 299) {
loading.stop();
return res.data
} else {
Promise.reject(res);
}
})
.catch(() => {
localStorage.removeItem('jwtToken');
window.location.href = './login';
});
}
推荐阅读
- node.js - Lambda Axios 发布到第二个 API 奇怪的异步行为
- reactjs - 如何在反应中显示下拉框其映射值而不是其键
- rest - 将我的 Postman 调用转换为 Dart/Flutter API 调用
- angular - 模块“AppModule”导入的意外值“AngularFireAuth”。请在删除未使用的页面时添加@NgModule 注释
- mysql - mySql 中的 Varcar(200) 与 html textarea 的 maxLength=200 属性不匹配
- reactjs - 在 react-grid-layout 中同时进行垂直和水平压缩
- javascript - 用于在鼠标悬停时修改表格单元格颜色的 Javascript - javascript 的语法错误 800A03EA
- javascript - 为什么我需要两次调用 setPageFromHash() 方法?
- android - CalendarView 显示最小日期为今天
- scala - 如何从 Source[ByteString, Any] akka 流中实现 2 个参数