环境:vue3+ts arco design
解决办法
在app.vue中增加
const debounce = (fn: any, delay: any) => {
let timer: any;
return (...args: any) => {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn(...args);
}, delay);
};
};
const resizeObserver = window.ResizeObserver;
window.ResizeObserver = class ResizeObserver extends resizeObserver {
constructor(callback: any) {
callback = debounce(callback, 200);
super(callback);
}
};
完整代码:
<template>
<div id="app">
<template v-if="route.path.startsWith('/user')">
<router-view></router-view>
</template>
<template v-else>
<BasicLayout></BasicLayout>
</template>
</div>
</template>
<script setup lang="ts">
import BasicLayout from "@/layouts/BasicLayout.vue";
import { onMounted } from "vue";
import { useRoute } from "vue-router";
const debounce = (fn: any, delay: any) => {
let timer: any;
return (...args: any) => {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn(...args);
}, delay);
};
};
const resizeObserver = window.ResizeObserver;
window.ResizeObserver = class ResizeObserver extends resizeObserver {
constructor(callback: any) {
callback = debounce(callback, 200);
super(callback);
}
};
const route = useRoute();
//TODO 全局初始化,全局单次调用
const doInit = () => {
console.log("hello,欢迎使用JOJ!");
};
onMounted(() => {
doInit();
});
</script>
<style>
#app {
}
nav {
padding: 30px;
}
nav a {
font-weight: bold;
color: #2c3e50;
}
nav a.router-link-exact-active {
color: #42b983;
}
</style>
参考文档:vue + element plus:ResizeObserver loop completed with undelivered notifications-CSDN博客