当前位置: 首页 > wzjs >正文

南阳网站设计网络运营课程培训班

南阳网站设计,网络运营课程培训班,国内能用WordPress的服务器,国家企业年报网上申报系统跟着视频学做项目的时候&#xff0c;碰到一个多级联动列表&#xff0c;列表元素的display会从none切换成block&#xff0c;切换过程中可能导致资源渲染过多&#xff0c;从而导致卡顿问题。<div class"all-sort-list2"><div class"item" v-for&quo…

跟着视频学做项目的时候,碰到一个多级联动列表,列表元素的display会从none切换成block,切换过程中可能导致资源渲染过多,从而导致卡顿问题。

<div class="all-sort-list2"><div class="item" v-for="(list_data1, index) in list" :key="list_data1.categoryId"@mouseenter="setChooseIndex(index)"><h3 :class="{ chooseNow: nowIndex == index }"><a>{{ list_data1.categoryName }}</a></h3><div class="item-list clearfix" :style="{ display: nowIndex == index ? 'block' : 'none' }"><div class="subitem"><dl class="fore" v-for="list_data2 in list_data1.categoryChild" :key="list_data2.categoryId"><dt><a>{{ list_data2.categoryName }}</a></dt><dd><em v-for="list_data3 in list_data2.categoryChild" :key="list_data3.categoryId"><a>{{ list_data3.categoryName }}</a></em></dd></dl></div></div></div>
</div>

对于这个列表,其内部元素是从服务区获取数据,然后通过v-for显示。

类item-list的disblock会不断从none切换为block。

组件渲染导致使用卡顿

<div class="all-sort-list2"><div class="item" v-for="(list_data1, index) in list" :key="list_data1.categoryId"@mouseenter="setChooseIndex(index)"><h3 :class="{ chooseNow: nowIndex == index }"><router-link>{{ list_data1.categoryName }}</router-link></h3><div class="item-list clearfix" :style="{ display: nowIndex == index ? 'block' : 'none' }"><div class="subitem"><dl class="fore" v-for="list_data2 in list_data1.categoryChild" :key="list_data2.categoryId"><dt><router-link>{{ list_data2.categoryName }}</router-link></dt><dd><em v-for="list_data3 in list_data2.categoryChild" :key="list_data3.categoryId"><router-link>{{ list_data3.categoryName }}</router-link></em></dd></dl></div></div></div>
</div>

当v-for循环中使用router-link标签时,随着display从none切换为block,多个router-link标签会被重新渲染。由于router-link标签是VUE组件,当数据过多时,可能一次display切换,会导致上千个VUE组件被重新渲染,因此会造成性能问题。

一个解决办法是可以把router-link换成a标签,再在a标签上绑定click事件处理。

回调函数被多次渲染

<div class="all-sort-list2"><div class="item" v-for="(list_data1, index) in list" :key="list_data1.categoryId"@mouseenter="setChooseIndex(index)"><h3 :class="{ chooseNow: nowIndex == index }"><a @click="">{{ list_data1.categoryName }}</a></h3><div class="item-list clearfix" :style="{ display: nowIndex == index ? 'block' : 'none' }"><div class="subitem"><dl class="fore" v-for="list_data2 in list_data1.categoryChild" :key="list_data2.categoryId"><dt><a @click="">{{ list_data2.categoryName }}</a></dt><dd><em v-for="list_data3 in list_data2.categoryChild" :key="list_data3.categoryId"><a @click="">{{ list_data3.categoryName }}</a></em></dd></dl></div></div></div>
</div>

但是这种方法仍然存在问题,由于每个a标签中都绑定了click事件,该事件会被渲染上千次,可以通过事件委托到父级,把事件的渲染降低为一次。

(但这里其实我也不太懂,我觉得虽然事件生成了多个,但是其实不click就不会被调用,不调用也会影响性能吗)

解决办法是使用事件委托。

把事件绑定在父级上,然后通过event.target获得点击的标签,进行处理。

<div class="all-sort-list2" @click="goSearch"><div class="item" v-for="(list_data1, index) in list" :key="list_data1.categoryId" ... </div>
</div><script>...goSearch(event){let e = event.target;getAttribute('...');}
</script>

http://www.dtcms.com/wzjs/53579.html

相关文章:

  • 上海制作网页哪家好win优化大师怎么样
  • 佛山市城市建设档案馆网站营销手段有哪些方式
  • 个人网站优秀好用的搜索引擎有哪些
  • 昆山建设招标信息网站直通车推广技巧
  • 上海网站注销吗百度一下了你就知道官网
  • 厦门专业网站制作寻找郑州网站优化公司
  • 做b2b网站可以和对方还价吗优秀软文案例
  • 网站建设推广语言网站优化查询
  • 网站开发编程语言域名查询万网
  • aspcms 生成网站地图网站优化网络推广seo
  • 代码编写网站手机优化专家下载
  • 网站建设与维护报告总结seo网络推广公司排名
  • 怎样在百度上注册自己的公司新的seo网站优化排名 网站
  • 静态网站怎么制作手机百度app免费下载
  • 珠海 网站开发企业seo推广
  • 企业为什么做网站推广网店推广运营策略
  • 网站地图咋做余姚网站如何进行优化
  • 网站降权查询工具佛山百度推广公司
  • 天猫店铺购买黑河seo
  • 中学加强校园网站建设营销网站建设专家
  • 网站系统开发怎么做青岛网站建设维护
  • 网站建设意思软文营销平台
  • php做网站特效关键词在线听免费
  • 用html做女装网站在线crm系统
  • 改网站js代码南宁关键词优化服务
  • 网站开发公司属于什么行业排名优化关键词
  • 做新闻网站用香港阿里云服务器网络建站平台
  • brophp框架如何做网站现在最好的营销方式
  • 微信开放平台创建小程序网站优化排名哪家好
  • 黄山公司做网站宁波seo网站服务