导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
最新评论
广树
2025-01-13 10:45
@石樱灯笼:牙刷剃须刀用计时器还好变量不多,但是净化器这种每个人家的环境不一样会造成很大误差。
广树
2025-01-13 10:44
@粽叶加米:嗯,家小,所以买了个小的
石樱灯笼
2025-01-13 02:43
根据我的认知,所有所谓的智能检测耗材进行清洗更换提醒的设备,基本都是一个计时器。什么牙刷剃须刀净水壶空气净化器,全都是个计时器。
粽叶加米
2025-01-12 22:56
看起来不大只,现用的小米净化器的滤芯挺大个的,
广树
2025-01-12 22:36
@Zrzzz:毕竟运营了那么多年,内容上还是很有自信的!
正在攻略

logo_kai.jpg


PSN奖杯卡

PSN奖杯卡

赞助商广告

解决Ionic Vue生命周期钩子无法调用的问题

作者:广树时间:2021-05-23 17:03:02分类:JavaScript/jQuery/Vue

在Ionic中,Vue的生命周期是被接管的。

因为Ionic对页面进行了缓存,所以每次页面只有第一次加载时才会触发Vue的生命周期,所以为了防止出现奇怪的问题,往往会用Ionic的生命周期,但是Ionic的生命周期问题也不少。

在Ionic中,有如下的生命周期

名称 描述
ionViewWillEnter
页面进入时触发
ionViewDidEnter
页面进入动画结束后触发
ionViewWillLeave
页面退出时触发
ionViewDidLeave
页面退出动画结束后触发

在经过一番测试之后发现一些很坑的设定。


1.在使用嵌套路由情况下

即Vue路由中使用了嵌套路由(点击查看文档

在这种情况下一般会有个Vue文件是主节点,如:

Home.vue


<div id="app">
  <router-view></router-view>
</div>


当然在Ionic中的写法是

Home.vue


<div id="app">
  <ion-router-outlet></ion-router-outlet>
</div>
此时神奇的事情发生了


ionViewWillEnter和ionViewDidEnter在子页面中是有效的,但是ionViewWillLeave和ionViewDidLeave只会在上面提到的Home.vue中触发。


2.使用了组件

上面Ionic的4种生命周期,在子组件中是都不会触发的。


解决方法:

目前为了解决这些不稳定因素,这边使用了watch $router 来解决


 watch: {
    $route() {
      if (this.$route.name === 'ViewName') {
        //如果切换的路由的Name为当前页面的Name时执行,即进入了页面
      }else{
        //如果不是时执行,即离开了页面
      }
    }
  },


#Ionic

donate.png

1210 x 50(蓝底).png

cloudcone