解决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 相关文章推荐
索趣科技的答案
Feb 07 Javascript
js window.event对象详尽解析
Feb 17 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
JS实现关键字搜索时的相关下拉字段效果
Aug 05 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
Apr 15 Javascript
多种jQuery绑定事件的实现方式
Jun 13 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
Dec 08 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
在Vuex中Mutations修改状态操作
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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
通过实例了解python property属性
2019/11/01 Python
python实现人像动漫化的示例代码
2020/05/17 Python
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
中专生自荐信
2013/10/12 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
会计专业自荐信
2014/06/03 职场文书
世博会口号
2014/06/20 职场文书
离婚财产分配协议书
2014/10/21 职场文书
民事和解协议书格式
2014/11/29 职场文书
学校食堂管理制度
2015/08/04 职场文书