解决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 有用的脚本函数
May 07 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
Dec 17 Javascript
jquery ajax 局部无刷新更新数据的实现案例
Feb 08 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 Javascript
node文件批量重命名的方法示例
Oct 23 Javascript
完美解决axios跨域请求出错的问题
Feb 05 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
微信小程序自定义toast弹窗效果的实现代码
Nov 15 Javascript
js实现div色块拖动录制
Jan 16 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 Javascript
Vant 中的Toast设置全局的延迟时间操作
Nov 04 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
是否存在第一台收音机的说法
2021/03/01 无线电
php部分常见问题总结
2008/03/27 PHP
php获取根域名方法汇总
2014/10/28 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
Symfony控制层深入详解
2016/03/17 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
javascript知识点收藏
2007/02/22 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
自我鉴定思想方面
2013/10/07 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
保送生自荐信范文
2015/03/26 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android