vite热更新导致的问题及解决

一、封装axios拦截器后,每次热更新虽然请求了一次,但是response了多次:

复制代码
import axios from "axios";
axios.interceptors.request.use()
axios.service.interceptors.response.use()

导致此问题是因为触发了多次拦截器,相当于是给axios添加了多个拦截器,所以多次触发;

解决办法:

单独对axios进行实例化,再设置拦截器

复制代码
import axios from "axios";
const service = axios.create({
  baseURL:GLOBAL_IP,
  headers: {
    'Content-Type': 'application/json', // 设置请求的Content-Type
  }
})
service.interceptors.request.use()
service.service.interceptors.response.use()

二、在移动端中使用keepalive,然后调用onActivated,里面设置定时更新的定时器,多次热更新不刷新页面的情况下会多个定时请求;

复制代码
let state = reactive({destroyTimer(){
        if(state.timer.length>0){
          for(let i=0;i<state.timer.length;i++){
            clearInterval(<number>state.timer[i])
          }
          state.timer = []
        }
      },
})
 onActivated(async () => {
      state.timer.push(setInterval(async () => {
        await state.getData();
      }, refreshTime * 1000))
      await state.getData();
    })

    onDeactivated(() => {
      state.destroyTimer()
    })
复制代码
解决办法:
   每次热更新的时候虽然不会触发onActivated,但是会触发onUnmounted,所以在unUnmounted钩子里再销毁一下就解决了热更新出现的这个问题。
复制代码
let state = reactive({destroyTimer(){
        if(state.timer.length>0){
          for(let i=0;i<state.timer.length;i++){
            clearInterval(<number>state.timer[i])
          }
          state.timer = []
        }
      },
})
 onActivated(async () => {
      state.timer.push(setInterval(async () => {
        await state.getData();
      }, refreshTime * 1000))
      await state.getData();
    })
    onUnmounted(()=>{
      state.destroyTimer()
    })

    onDeactivated(() => {
      state.destroyTimer()
    })
相关推荐
cngm1109 分钟前
若依分离版前端部署在tomcat刷新404的问题解决方法
java·前端·tomcat
摸鱼的春哥10 分钟前
组合为啥比继承更高级?以构建buff系统为例
前端·javascript·后端
江城开朗的豌豆10 分钟前
让TS函数"说到做到":返回值类型约束的实战心得
前端·javascript
晓得迷路了18 分钟前
栗子前端技术周刊第 104 期 - Rspack 1.6、Turborepo 2.6、Chrome 142...
前端·javascript·chrome
亿元程序员19 分钟前
Cocos安卓小游戏如何快速接入快手联盟变现?
前端
江城开朗的豌豆21 分钟前
TS泛型:让类型也学会“套娃”,但这次很优雅
前端·javascript
西洼工作室34 分钟前
vue2+vuex登录功能
前端·javascript·vue.js
IT_陈寒41 分钟前
Spring Boot 3.2性能翻倍!我仅用5个技巧就让接口响应时间从200ms降到50ms
前端·人工智能·后端
艾小码1 小时前
从写原生JS到玩转框架:我走过的那些弯路和顿悟时刻
前端·javascript
初遇你时动了情5 小时前
css中backdrop-filter 详细使用 ios毛玻璃效果、filter和backdrop-filter使用说明
前端·css