刷新一个vue页面,会不会走destroyed() 生命周期方法

2020-02-11  本文已影响0人  指尖跳动

一个vue中有如下代码:

created (){
  console.log(' created');
},

destroyed() {
  console.log('destroyed');
}

这里有一个console log, 当我刷新我的页面的时候,只打印的有created,没有打印destroyed。

为什么?

这是官方文档:

destroyed

实例销毁后调用。该钩子被调用后,对应 Vue 实例的所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。

这个生命周期所能做的事情,始终是跟vue 实例紧密结合.
它是在什么时候触发的呢?文档也有提及,在调用 vm.$destroy()才会主动触发

所以destroyed是在被vue 被销毁的时候才会触发,但是页面刷新并没有触发vue 的销毁,它仅仅是浏览器的主动行为.

如果想监听页面的刷新的或者浏览器的刷新操作,可以在mounted 里面用这个方法:

window.addEventListener("beforeunload", function(e) {
      console.log("I want to cancel");
 // Cancel the event
    e.preventDefault();
      // Chrome requires returnValue to be set
      e.returnValue = "hello";
});

这个浏览器的window api 可以监听你所谓的「页面刷新」的情况
大概效果是这样子的:


上一篇下一篇

猜你喜欢

热点阅读