解决elementui导航折叠卡顿的问题
解决 ElementUI 导航折叠卡顿的问题,通常可以通过以下几种方法来优化性能:v-show
而不是 v-if
v-if
会动态地添加和移除 DOM 元素,而 v-show
只是简单地切换元素的显示状态。使用 v-show
可以减少 DOM 的重新渲染次数,从而提升性能。
<el-menu :collapse="isCollapse">
<el-menu-item v-for="item in items" :key="item.name" v-show="isCollapse || item.visible">
{{ item.name }}
</el-menu-item>
</el-menu>
requestAnimationFrame
requestAnimationFrame
可以让浏览器在下一次重绘之前执行代码,优化动画效果。
methods: {
toggleMenu() {
window.requestAnimationFrame(() => {
this.isCollapse = !this.isCollapse;
});
}
}
.el-menu {
transition: width 0.3s;
}
<template>
<el-menu :collapse="isCollapse">
<el-menu-item v-for="item in items" :key="item.name" v-show="isCollapse || item.visible">
{{ item.name }}
</el-menu-item>
</el-menu>
<el-button @click="toggleMenu">Toggle Menu</el-button>
</template>
<script>
export default {
data() {
return {
isCollapse: false,
items: [
{ name: 'Home', visible: true },
{ name: 'About', visible: true },
{ name: 'Contact', visible: true }
]
};
},
methods: {
toggleMenu() {
window.requestAnimationFrame(() => {
this.isCollapse = !this.isCollapse;
});
}
}
};
</script>
<style>
.el-menu {
transition: width 0.3s;
}
</style>