解决vue中的无限循环问题


Posted in Javascript onJuly 27, 2020

项目中遇到了这样一个问题:每一种产品有对应的服务费,每一个商家有多种商品要单独计算每一家的服务费,最后汇总总的服务费用。我直接写了一个方法来计算出每个商家和总的服务费用并return出来。如果不看控制台的话运行是没问题的。但是控制台报了无限循环的错误。

解决vue中的无限循环问题

下面是错误代码

html:

解决vue中的无限循环问题

js:

解决vue中的无限循环问题

这里会出现无限循环的原因是数据更新触发计算方法来更新视图,视图更新又反过来触发这个方法更新数据。所以尽量不要直接在绑定的数据上使用方法来绑定。找到问题后下面就是解决办法。

因为选中商品后就要重新计算价格。所以我将选中的商品添加到data里面

解决vue中的无限循环问题

然后通过侦听器监听totalBox的变化

解决vue中的无限循环问题

当totalBox变化后在执行计算方法。这样就避免一直来回计算的问题

解决vue中的无限循环问题

补充知识:vue 排序无限循环问题解决

在vue里对每个数组排序,会出现无限循环的问题,我认为的原因是:

vue动态监听data里数组的变化,数组刚一排序发生变化,vue立马重新执行排序导致无限循环。

解决问题:

1、将要排序的数组命名为全局变量,这样不受vue的监听

2、全局数组赋值vue里的数组时,不要使用=号,这样只是把全局数组的地址指向vue数组地址(用遍历vue数组,push进全局数组里)

代码片段 对数组对象属性进行排序(**************************为解决思路):

var sloveSortList = []; //解决vue中数组排序无限循环的问题 **************************

export default {
data() {
return {
    showSectionList: [], //界面需要显示的断面,还没有进行排序
watch:{

 //列表发生变化
showSectionList: function(){
//传递点位列表数据,给父级reallndex.vue页面
this.leftshowSection(this.showSectionList);

//把showSectionList数组赋值给sloveSortList,如果直接=,相当于引用地址,排序的时候vue监听showSectionList会出现无限循环。
sloveSortList = [];
for(var i=0; i < this.showSectionList.length; i++ ){
sloveSortList.push(this.showSectionList[i]);    **************************
}
//把变化了的列表赋值到准备要排序的sortShowSectionData上
this.sortShowSectionList = this.sortShowSectionData()  **************************

//赋值排好序的数组,为了搜索使用
this.beforeSearchList = this.sortShowSectionList;
//默认选中第一个断面传递给父组件
this.showSectionClick(0);
}

methods: {
//列表排序方法
sortShowSectionData:function(){
var factorNumber = this.nowFactor.factor_code+ 'Level';
if(this.nowFactor.factor_code == undefined || this.nowFactor.factor_code == 'NaN' || this.nowFactor.factor_code == null){
return
}
//对列表进行了排序
var searchList = sloveSortList.sort((a,b)=>{      **************************
var factorNumber = this.nowFactor.factor_code;
if(parseFloat(a[factorNumber]) > parseFloat(b[factorNumber])){
return -1;
} else if(parseFloat(a[factorNumber]) == parseFloat(b[factorNumber])){
return 0;
}else{
return 1;
}
});

return searchList;
},

以上这篇解决vue中的无限循环问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
function foo的原型与prototype属性解惑
Nov 19 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
May 27 Javascript
JS循环遍历JSON数据的方法
Jul 08 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
Aug 28 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
Oct 20 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 Javascript
angular-cli修改端口号【angular2】
Apr 19 Javascript
原生JS实现图片懒加载(lazyload)实例
Jun 13 Javascript
基于vue.js实现分页查询功能
Dec 29 Javascript
利用JavaScript的Map提升性能的方法详解
Aug 14 Javascript
微信小程序实现Swiper轮播图效果
Nov 22 Javascript
小程序实现图片移动缩放效果
May 26 Javascript
Element MessageBox弹框的具体使用
Jul 27 #Javascript
Vue 组件复用多次自定义参数操作
Jul 27 #Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
Jul 27 #Javascript
Element InfiniteScroll无限滚动的具体使用方法
Jul 27 #Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
Jul 27 #Javascript
Element Alert警告的具体使用方法
Jul 27 #Javascript
Element Badge标记的使用方法
Jul 27 #Javascript
You might like
php设计模式 Template (模板模式)
2011/06/26 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
js微信分享实现代码
2020/10/11 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
2019/10/12 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
python读写csv文件方法详细总结
2019/07/05 Python
pandas-resample按时间聚合实例
2019/12/27 Python
Python 创建守护进程的示例
2020/09/29 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
班级活动策划书
2014/02/06 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
优秀党员事迹材料
2014/12/18 职场文书
大学生村官入党自传
2015/06/26 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
深度学习详解之初试机器学习
2021/04/14 Python
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS