w万条接口数据下 如何优化vue 接值 及赋值

29 篇文章 0 订阅
23 篇文章 0 订阅

正题 如果你请求一个接口  接口返回数据为10000条  那么  如何 将这1w条数据赋值给vue变量呢

如果你测试过 你会发现 一个  装有2000个json对象的数组  赋值给vue的data属性时   屏幕会出现卡顿

出现卡顿的原理也是因为 vue 会对赋值对象 动态添加set get方法 这也是vue 双向绑定的原理   

那么我们如何优化这个问题呢

这里引入个知识点

vue2版本   有2个方式修改数组是不会被vue监听到的

    a 通过数组索引修改内容的时候 vue是无法监听数组变化的 
    b 通过改变数组长度的方法     vue是无法监听数组变化的

利用以上2点 我们可以在不被vue监听的情况下  接受后台的 1w条数据 然后 不渲染页面 仅仅当作储存使用


 data(){
    return {
      list1:[], //声明数组list1
    }
  },


freezeList1(){  // 绑定一个点击事件

  // l 为模拟的1w条数据
  const l = [{name:'a'},{name:'b'},{name:'c'},{name:'d'},{name:'e'},{name:'f'}]
 
  this.list1.length = l.length  // 修改数组长度 为for循环准备  这里vue是不会被监听的

  for(let i =0;i<l.length;i++){
     this.list1[i]=l[i] // 索引赋值 这里vue也是不会监听的
  }
  console.info(this.list1)
},


通过上面的代码 我们可以看到 list1 在页面渲染出来的 是个空数组 当我们执行 freezeList1方法后
list1 已经变成了1w条数据 但是我们的页面渲染的还是空数组
然后我们可以利用窗口可视化 或者页面滚动等方法 分批次的 从list1里取出值  赋值给 list2
这里给list2赋值 用 直接赋值 或者 set的方法 总之是使用可以被vue监听的方式   这样就缓解了1w条数据 同时赋值给vue变量的问题

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值