在vue中使用setTimeout,离开当前路由setTimeout未销毁以及父子组件的加载

问题

在项目中用了延时

   data() {
      return {
        timer:""
      };
    },
    created() {
    let _this = this;
    _this.timer = setTimeout(() => {
             //自己的代码
              }
            }, 1000);
    },
    destroyed () {
    let _this = this;
   	clearTimeout(_this.timer) // 清除
    }
         

然鹅,发现每次只执行了一次。页面刚渲染的时候是正确的,切换路由就给人一种延时器没有清除的感觉。

解决办法

额,后来发现不是定时器的问题。是因为父子组件的加载顺序为
父beforeCreated ->父created ->父beforeMounted ->子beforeCreated ->子created ->子beforeMounted ->子mounted -> 父mounted
然鹅,虽然程序是按这个顺序写的,但是因为子组件自身在created阶段执行可能较费时间,而父组件mounted的时候需要子组件created后的某些值。所以就在父组件mounted的时候,给方法加了延时1秒。目前解决了问题。

子组件内
在这里插入图片描述
父组件内
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值