美文网首页
大量数据异步渲染优化(vue)

大量数据异步渲染优化(vue)

作者: 肥羊猪 | 来源:发表于2021-03-24 12:49 被阅读0次

vue文件:

<template>
  <ul @scroll="handleScroll($event)">
    <li v-for="(item,id) in list" :key="item.id">
      <div class="item">
        <span>{{item.title}}</span>
        &nbsp;&nbsp;&nbsp;
        <span>{{item.name}}</span>
      </div>
      <div class="item">
        <img :src="'https://oss.itell.club/images/content'+id+'.png'" alt="">
        <span>{{item.content}}</span>
      </div>
    </li>
  </ul>

</template>

<script>
import common from '@/utils/tools.js'
export default {
  data() {
    return {
      listData: [],
      page:1,
      size:12
    }
  },
  computed:{
    list:function(){
      return this.listData.slice(0,this.page*this.size)// 每次展示size条数据
    }
  },
  mounted() {
    let temp = []
    for (let i = 1; i <= 10000; i++) {
      temp.push({
        id: i,
        title: 'title' + i,
        name:'name'+i,
        content:'content'+i
      })
    }
    this.listData = temp
  },
  methods:{
    morechange() {
      this.page++// 滚动更多数据
      this.$forceUpdate()
    },
    refresh() {
      this.page = 1// 刷新初始化
      this.$forceUpdate()
    },
    handleScroll(e) {// 滚动函数
      let _this = this
      common.handleScroll(e, function(res) {
        if (res == 'more') {
          _this.morechange()
        } else if (res == 'refresh') {
          _this.refresh()
        }
      })
    },
  }
}
</script>

<style lang="css" scoped>
ul{
  /* 关键高度设置 */
  height:80vh;
  overflow-y:scroll;
  background:#DDD;
}
li{
  height:15vh;
}
</style>

js:

const common = {}
common.handleScroll = function(e, callback) {
  let conScrollHeight = e.target.scrollHeight
  let conClientHeight = e.target.clientHeight
  let conScrollTop = e.target.scrollTop
  // console.log(conScrollTop, conClientHeight, conScrollHeight)
  // 刷新或者滚动操作
  let res = conScrollTop + conClientHeight + 1 >= conScrollHeight ? 'more' : (conScrollTop <= 0 ? 'refresh' : false)
  callback(res)
}
export default common;

同时 这个地方可以用函数节流和防抖来进一步优化 具体参考:https://www.jianshu.com/p/b1870a66b3d7

相关文章

  • 大量数据异步渲染优化(vue)

    vue文件: js: 同时 这个地方可以用函数节流和防抖来进一步优化 具体参考:https://www.jians...

  • Vue - Table表格渲染

    Vue - Table表格渲染上千数据优化 Vue - Table表格渲染上千数据优化 8 个月前 · 来自专栏 ...

  • IOS - UIView绘制流程 (displayLayer)(

    性能优化之 UI渲染优化 - 异步渲染 使用displayLayer进行异步绘制

  • vue原理与开发逻辑

    1、vue中的$nextTick()的用法和原理 vue的DOM更新是异步的,当数据更新了,再dom中渲染后,自动...

  • 为什么Vue采用异步渲染呢?

    Vue 是组件级更新,如果不采用异步更新,那么每次更新数据都会对当前组件进行重新渲染,所以为了性能, Vue 会在...

  • vue 数据更新 dom不渲染

    场景:获取接口数据,更新dom问题:数据更新了,dom未渲染代码: 原因:vue的dom更新是异步的,即当sett...

  • 异步渲染1

    异步渲染优化篇章 一.为什么需要异步渲染,异步渲染有什么好处?? 我们添加到项目或从服务端获取的图片格式基本上都为...

  • 4.vue 为何采用异步渲染

    理解: 如果不采取异步更新,那么每次更新数据都会对当前组件进行重新渲染,为了性能考虑,Vue 会在本轮数据更新后,...

  • vue异步渲染

    vue是组件级更新,当数据更改一次组件就要重新渲染一次,性能不高,为了防止数据一更新就更新组件,所以做了个异步更新...

  • vue 为何采用异步渲染

    理解:如果不采取异步更新,那么每次更新数据都会对当前组件进行重新渲染,为了性能考虑,Vue 会在本轮数据更新后,再...

网友评论

      本文标题:大量数据异步渲染优化(vue)

      本文链接:https://www.haomeiwen.com/subject/ylzchltx.html