Javascript 在react中使用axios拦截器的问题
我想在使用axios发出和发送请求时获得获取状态。我认为我可以通过使用axios拦截器来实现这一点。我尝试以下代码:Javascript 在react中使用axios拦截器的问题,javascript,reactjs,axios,xmlhttprequest,interceptor,Javascript,Reactjs,Axios,Xmlhttprequest,Interceptor,我想在使用axios发出和发送请求时获得获取状态。我认为我可以通过使用axios拦截器来实现这一点。我尝试以下代码: /axiostance.js let fetching=false; const axiosInstance=axios.create(); axiosInstance.interceptors.request.use(配置=>{ 取数=真; log(“第一个日志:”,正在获取); 返回配置; },()=>{fetching=false}); axiosInstance.inte
/axiostance.js
let fetching=false;
const axiosInstance=axios.create();
axiosInstance.interceptors.request.use(配置=>{
取数=真;
log(“第一个日志:”,正在获取);
返回配置;
},()=>{fetching=false});
axiosInstance.interceptors.response.use(()=>{
log(“第二个日志:”,正在获取);
取数=假;
log(“第三个日志:”,正在获取);
});
导出{获取,axiosInstance};
这就是我使用自己创建的axios实例发出和发送请求的方式:
/component.js
从“/axiosInstance”导入{fetching,axiosInstance};
常量组件=()=>{
const sendRequest=()=>{
get(“someUrl:somePort/”;
};
返回(
点击
{获取?“真”:“假”}
);
}
导出默认组件;
但问题是,这是行不通的。我在/axiostance.js中获得了预期的日志:
第一个日志:true
第二个日志:true
第三个日志:false
但是我在/component.js
中有一个标记,我用它来显示从/axiostance.js
中获取变量的值。它的价值永远不会变为真,也永远是假的
{fetching?“true”:“false”}
您可以使用获取
作为状态。
它会工作的。会的。谢谢。
import {useState} from 'react';
const [fetching, setFetching] = useState(false);
const axiosInstance = axios.create();
axiosInstance.interceptors.request.use(config => {
setFetching(true);
console.log("first log: ", fetching);
return config;
}, () => { fetching = false });
axiosInstance.interceptors.response.use(() => {
console.log("second log: ", fetching);
setFetching(false);
console.log("third log: ", fetching);
});
export { fetching, axiosInstance };