axios 再次封装之后无变化,如何解决?

下面是我在一个js文件写的拦截请求

import axios from 'axios'
setTimeout(()=>{
    axios.interceptors.request.use(config => {
        // 请求时是否有统一登录token,有的话存储
        config.headers.token = axios.defaults.token
        console.log(axios.defaults.token, '插件');
        return config
    })
},0)

然后我想在用户点击的时候重新修改拦截请求

    axios.interceptors.request.use(config => {
        // 请求时是否有统一登录token,有的话存储
        config.headers.token = ‘123’
        return config
    })

可是在项目中没有体现出我后改的拦截好像还是走的第一次,如何解决该问题,这的问题又在哪里

下面是大概执行流程代码

import axios from 'axios'
setTimeout(()=>{
    axios.interceptors.request.use(config => {
        // 请求时是否有统一登录token,有的话存储
        config.headers.token = axios.defaults.token
        console.log(axios.defaults.token, '插件');
        return config
    })
},0)
el.onclick = function () {
  axios.interceptors.request.use(config => {
    config.headers.token = 'wl'
    return config
  })
}
export default axios;

最佳答案

先移除原来的拦截器

const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);

或者两种请求使用不同的实例

const instance = axios.create();
instance.interceptors.request.use(config => {/*...*/});