vue 之 生命周期(钩子)

生命周期函数:是由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行.

 

vue组件的生命周期函数,可以分为三大类:

第一个阶段:初始化阶段

1>beforeCreate  (vue实例初始化)

2>created (初始化完成,发送ajax)

3>beforeMount (模版和数据结合挂载页面没有渲染)

4>mounted  (页面挂载后,页面以渲染,操作DOM)

第二个阶段:运行时阶段

7>beforeUpdate (数据开始改变没渲染前)

8>update  (重新渲染)

第三个阶段:销毁阶段

5>beforeDestroy (实例没销毁前执行)销毁阶段

6>destroyed  (实例销毁后执行)

 

<template>
  <div>
    <h2>生命周期</h2>
    <h3>{{ name }}</h3>
    <!--若优先销毁,这里的点击就无效了,因为事件,监听什么都会被销毁-->
    <h1 @click="test = 'ls'">{{ test }}</h1>
    <button @click="$destroy()">销毁</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      name: "张三",
      test: "张三",
    };
  },
  //----------------第一阶段----------------------
  //data数据初始化之前,组件还没有数据
  beforeCreate() {
    console.log(this.name); //输出结果:undefined
  },
  //data数据初始化之后,可以获取到组件的数据
  //场景:发生ajax请求
  created() {
    console.log(this.name); //输出结果:张三

    //该段代码是为了测试销毁后的作用
    this.timer = setInterval(() => {
      console.log("好嗨哦");
    }, 1000);
  },
  //挂载/渲染之前
  beforeMount() {
    console.log(document.querySelector("h3")); //输出结果:null
  },
  //挂载/渲染完成
  //场景:操作DOM,一般不用操作DOM
  mounted() {
    console.log(document.querySelector("h3")); //输出结果:有元素节点
  },
  //----------------第二阶段----------------------
  //更新之前
  beforeUpdate() {
    console.log(document.querySelector("h1").innerHTML);
  },
  //更新之后
  updated() {
    console.log(document.querySelector("h1").innerHTML);
  },
  //----------------第三阶段----------------------
  //销毁之前
  beforeDestroy() {
    console.log("销毁之前");
    clearInterval(this.timer);
  },
  destroyed() {
    console.log("销毁之后");
  },
};
</script>
<style></style>

  

动态组件(keep-alive) (在服务器渲染期间不被调用)

9>activated (被keep-alive缓存的组件激活时调用)

10>deactivated  (被keep-alive 缓存的组件停用时调用)

11>beforeUnmount  (在卸载组件实例之前调用,在该阶段,实例完全正常)

 

 

 

 

 

posted @ 2021-02-25 16:54  zmztyas  阅读(107)  评论(0编辑  收藏  举报