解决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代码编写需要注意的7个小细节小结
Sep 21 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
js实现简洁大方的二级下拉菜单效果代码
Sep 01 Javascript
JavaScript中对JSON对象的基本操作示例
May 21 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
Dec 19 Javascript
JS数组去重常用方法实例小结【4种方法】
May 28 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
Jan 18 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
JS html事件冒泡和事件捕获操作示例
May 01 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
Nov 13 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
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正则走开
2008/03/15 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
python装饰器的特性原理详解
2019/12/25 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
建筑毕业生自我鉴定
2013/10/18 职场文书
合作意向书格式及范文
2014/03/31 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript