解决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 相关文章推荐
javascript document.execCommand() 常用解析
Dec 14 Javascript
拖动table标题实现改变td的大小(css+js代码)
Apr 16 Javascript
JavaScript删除数组元素的方法
Mar 20 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
JQuery中基础过滤选择器用法实例分析
May 18 Javascript
JQuery中attr方法和removeAttr方法用法实例
May 18 Javascript
Bootstrap表单布局样式代码
May 31 Javascript
JQuery DIV 动态隐藏和显示的方法
Jun 23 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
vue中设置height:100%无效的问题及解决方法
Jul 27 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
Dec 10 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
python实现俄罗斯方块
2018/06/26 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
详解python itertools功能
2020/02/07 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
python logging模块的使用
2020/09/07 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
文化活动实施方案
2014/03/28 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
先进党支部申报材料
2014/12/24 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
525心理健康活动总结
2015/05/08 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL