Vue update loop 的问题

Vue 在进行日期排序的时候在 methods 中会报错。

我在循环的时候用了v-for 来循环组件

<zhaocai-list v-for="(item,index) in test(zhaocaiData)" v-bind:key="item.id"
 ></zhaocai-list>

methods 方法中来处理这个sortData 主要是对列表里的日期做排序 然后让列表根据时间先后来渲染

       methods: {
            test(zhaocaiData){
                return zhaocaiData.sort((a,b)=>{
                    let timeA = a.time
                    let timeB = b.time
                    return new Date(timeB) - new Date(timeA);
                })
            },
       }

这样子处理之后前端渲染没问题,但是在console 控制台中出现了 vue warm 报警

940210-20180831125354438-2015669990.png

经过审查和网上查资料发现有以下说法:

  1. 如果用方法或者计算属性对 vm.$data 的属性进行操作,理论上可能因为修改到循环对象,诱发无限循环
  2. 如果筛选或排序会 更改原值。那么就会进行无限循环

我的问题属于第二种,因为用sort数组进行排序会更改源数组, 但是筛选的方法比如 filter/some 就不会产生这种情况

940210-20180831125418388-1154046170.png

940210-20180831125427595-862414039.png

解决方案:这种方法放在 计算属性中处理,避免vm.$data 的深层嵌套

转载于:https://www.cnblogs.com/qujun/p/9565223.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值