首页 > 其他分享 >使用defer优化白屏时间 长列表渲染

使用defer优化白屏时间 长列表渲染

时间:2023-06-08 13:57:43浏览次数:30  
标签:function defer return 渲染 useDefer 白屏 frameCount rafId

创建 useDefer.js文件

import { ref , onUnmounted } from 'vue'

export function useDefer(maxCount=100){
  const frameCount = ref(0)
  let rafId;
  function updateFrameCount(){
   rafId = requestAnimationFrame(()=>{
     frameCount.value++;
     if(frameCount.value>=maxCount){
        return;
     }
     updateFrameCount()
  })  
 } 
 updateFrameCount()
 onUnmounted(()=>{
   cancelAnimationFrame(rafId);
 })
 return function defer(n){
   return frameCount.value>=n
 }   
}

在组件中使用

 1 <template>
 2     <div>
 3         <div v-for="(item, index) in 1000" :key="index">
 4             <customComponent v-if="defer(index)"></customComponent>
 5         </div>
 6     </div>
 7 </template>
 8 
 9 <script setup>
10 import { useDefer } from './useDefer'
11 
12 const defer = useDefer()
13 </script>

 

标签:function,defer,return,渲染,useDefer,白屏,frameCount,rafId
From: https://www.cnblogs.com/salayang/p/17466239.html

相关文章

  • 一份配置轻松搞定表单渲染,配置式表单渲染器在袋鼠云的实现思路与实践
    前段时间,袋鼠云离线开发产品接到改造数据同步表单的需求。一方面,数据同步模块的代码可读性和可维护性较差,导致在数据同步模块开发新功能和定位问题的效率很低。另一方面,整体规划上,希望在对接新的数据源时,可以不再关心表单渲染相关问题,从数据源中心新建数据源一直到数据源在数据同......
  • 列表渲染-了解v-for的基本用法
    列表渲染指令vue提供了v-for列表渲染指令,用来辅助开发者基于一个数组来循环渲染一个列表结构。v-for指令需要使用iteminitems形式的特殊语法,其中:items是待循环的数组item是被循环的每一项v-for指令还支持一个可选的第二个参数,即当前项的索引。语法格式为(item,index)inite......
  • 渲染--开篇
    介绍做渲染相关的工作有一段时间了,虽然工作上有了些收获但是整体的知识还是感觉零零散散,现在准备尝试下把自己从开始接触到目前能理解的范畴内的东西梳理下,挖个坑能填多少填多少,当然希望以后还能继续往下玩儿,还挺有意思的就是国内貌似做底层方向的机会不太多。先贴个大佬的图形......
  • 路由权限的实现与动态导航的渲染
    路由权限的实现与动态导航的渲染1.作用对于管理系统,不同的账号有不同的权限,登录后所看到的内容自然也应该不同。所以这里就要根据账号的角色渲染不同的导航,有些路由就不能访问。2.处理路由,形成不同的权限。1.拆分路由把路由拆分成不同的模块,每个模块能访问到的路由是......
  • 条件渲染,列表渲染,双向数据绑定,事件处理,checkbox单选,
    条件渲染v-if,v-else-if,v-else:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc="/js/vue.js"></script></head><......
  • 运用webkit绘制渲染页面原理解决iscroll4闪动的问题
    PostedbyunbugonSep19,2012inCSS3,MobileWebApp,OPOA|1comment已经有不少前端同行抱怨iScroll4的各种问题,我个人并不赞同将这些问题归咎于iScroll4,因为iScroll4进无论是touch事件的捕获,还是使用transform来处理滚动,以及将cubic-bezier应用到transition上实现高效......
  • 关于echarts无法在mounted中渲染的问题
    最初实现:echarts图标被单独作为一个组件引入,通过传入数据来显示。<divclass="echart"><divclass="echarts-cont"><Charts:dataList="list":total="total"></Charts></div>echarts组件代码:exportdefault{name:"......
  • Vue——属性指令、style和class、条件渲染、列表渲染、事件处理、数据双向绑定、过滤
    vm对象<body><divid="app"><h1>{{name}}</h1><button@click="handleClick">点我</button></div></body><script>//1写在data或method中的属性或方法,从vm中直接可以点出来//2method的函数中,如......
  • 浏览器渲染HTML的步骤
       HTML被HTML解析器解析成DOMTree,CSS则被CSS解析器解析成CSSOMTree`。DOMTree和CSSOMTree解析完成后,被附加到一起,形成渲染树(RenderTree)。节点信息计算(重排),这个过程被叫做Layout(Webkit)或者Reflow(Mozilla)。即根据渲染树计算每个节点的几何信息生成布局......
  • vue基础用法-内容渲染指令
    1.指令的概念指令(Directives)是vue为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构。vue中的指令按照不同的用途可以分为如下6大类:内容渲染指令属性绑定指令事件绑定指令双向绑定指令条件渲染指令列表渲染指令注意:指令是vue开发中最基础、最常用、最简单的知识......