一个方法解决重组件渲染慢的问题

/
文章热度/?
本文共计/0 字
预计阅读/0 分钟

最近在使用Vue3重构项目,其中,同事写的左侧菜单组件,打开的时候总是要卡顿一下,然后再展示菜单。分析了下原因,大概是因为菜单太多,层级也比较深。导致渲染效率比较低。

菜单多我们是没有办法解决的,但是用户体验还是要尽可能地优化。我突然想到了最近在短视频平台上学到的一种渲染组件的方法,可以使得复杂组件渲染也能得到良好的体验。

直接上代码哈哈,主要用了requestAnimationFrame

import { ref } from 'vue'

export function useDefer(maxFrameCount = 1000) {
  const frameCount = ref(0)
  const refreshFrameCount = () => {
    requestAnimationFrame(() => {
      frameCount.value++
      if (frameCount.value < maxFrameCount) {
        refreshFrameCount()
      }
    })
  }
  refreshFrameCount()
  return function (showInFrameCount) {
    return frameCount.value >= showInFrameCount
  }
}

然后在Vue文件中:

<template>
  <el-menu v-for="(menu, index) in lotsOfMenus" :key="index">
    <NavSubMenu v-if="defer(index)" :menu="menu"></NavSubMenu>
  </el-menu>
</template>

<script setup>
import { useDefer } from '@/utils/useDefer.js'
const defer = useDefer()
......
</script>

一个方法解决重组件渲染慢的问题

https://blog.vidorra.life/p/c41124d

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

© 2023圈圈 本站总访问量 ???人次
Powered byHexo&Dreamland
GO GO GO GO