vue mounted 调用两次的解决办法

在开发中发现其中一个页面moutned调用了两次,而其他页面正常,表示很懵逼,然后查找原因,终于找到了,其实归根到底是要知道mounted的调用机制问题;

情况:在这个页面中出现了mounted 加载了两次的情况;

方法:排除法

首先把 this.$store.commit() 方法注释掉,发现就好了,只加载一次

初步判断是commit  方法导致的

二  验证判断是否正确,不使用commit 方法,该用直接改变变量状态的方法,发现又加载了两次;

再次判断,不是由于commit引起的

三   猜想commit到底实现了什么逻辑,然后找到了v-if

v-if会重新渲染页面,而mounted 又是在重新渲染完成之后调用的,所以猜想是v-if导致的

然后换成v-show 发现完美解决问题;

v-show 不会重新加载页面,仅仅是显示隐藏而已;

从网上找来的生命周期图,各位网友可以了解一下,希望给你带来一些启发;

原文地址:https://www.cnblogs.com/chenjianbo/p/9866312.html

时间: 2024-10-09 03:28:31

vue mounted 调用两次的解决办法的相关文章

Java AOP nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice || Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0' 两个异常解决办法

贴出applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://ww

jquery的on绑定点击事件执行两次的解决办法

js(jquery)的on绑定点击事件执行两次的解决办法—不是事件绑定而是事件冒泡 遇到的问题:jquery中用.on()给页面中新加的元素添加点击事件时,点击事件源,绑定的事件执行两次,这里的alert会执行两次,相应地数组删除也执行两次,具体代码如下(其中.tabDel是页面加载之后新生成的元素,故不能用普通的$(‘.tabDel).click(function(){})的方法添加点击事件): 上网找的解决方法大概有一下两种:1.在用 on 绑定 click 事件之前,对该事件解绑,也就是

andriod 4.0以上版本不调用onConfigrationChange方法的解决办法

我们首先看看Android4.0以前版本是如何调用onConfigrationChange方法的: 1. 首先在manifest.xml文件里面添加权限:<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/> 2. 然后在manifest.xml文件中activity配置属性:android:configChanges="orientation|keyboardHidden

React + antd 组件离开页面以后出现Can only update a mounted or mounting component 的解决办法

做项目的过程中,来回切换页面时,一直遇到Can only update a mounted or mounting component 这个问题,原因是当离开页面以后,组件已经被卸载,执行setState时无法找到渲染组件. 解决办法特别简单,在离开页面时的周期函数(componentWillUnmount)中: //组件将被卸载 componentWillUnmount(){ //重写组件的setState方法,直接返回空 this.setState = (state,callback)=>{

Qt跨线程调用错误解析及解决办法

错误提示:Error: Cannot create children for a parent that is in a different thread. 错误案例分析 新建SerialLink子线程,继承QThread,并重写它的run(),调用 start()函数时自动调用重载的run()函数.在主线程中创建SerialLink类的对象. 串口_port在SerialLink的头文件中定义,在_hardwareConnect()函数中初始化.在_connect()函数中调用start()函

前端的事件冒泡(例如点击一次onclick事件执行两次)解决办法

问题概要: 当我运用antd 中 radio组件的时候发现radio组件是有bug的 就是你不能给他赋予id 和 value,同时也绑定不上onclick等事件.举个例子: 可以看到 你就算赋予了id 和value 前端页面渲染也是不正常的 value无论赋成什么 结果都是on但是我还需要对他进行一些操作需要绑定他的onclick事件 所以我得解决办法就是在radio标签外套了一层div 绑定了id属性,同时将onclick事件绑定在这层div上.当我们触发它时,通过jQuery的子选择器找到内

重写dispatchKeyEvent方法 按返回键back 执行两次的解决办法

重写dispatchKeyEvent方法 按返回键back 执行两次的解决方法 @Override   public boolean dispatchKeyEvent(KeyEvent event) {           if(event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() != KeyEvent.ACTION_UP) {//不响应按键抬起时的动作                //TODO 代码    

前台调用接口出现两次请求解决办法

这里用 vue-resource说明 this.$http.post('http://localhost/phpcrud/app.php?action=create',{"username":this.customer.name,"phone":this.customer.phone,"email":this.customer.email}) - 后台用的php if ($action == "create") {$input

Android的HttpClient调用,冲突的解决办法

只适用部分情况 题外话 攻关百度自动发贴作推广失败,但登录已拿下.全扔有点浪费. 在登录的基础上写了个百度的自动签到系统,功能已实现(.net+nodejs) 用nodejs是我没摸清楚百度的RSA加密算法,索性就直接把百度的RSA加密移到nodejs了(都是JS). 成功后又想了想,可以把.net实现迁移到JAVA,写个安卓百度签到的APP的应用,练练手复习安卓,顺带看能不能赚点广告费. 迁到JAVA的过程非常顺利,但是到Android就进了几个坑. .NET 获取token代码 ,用微软给的