Vue

[vue3快速入门] 5.vue对象的生命周期

2021-09-11  本文已影响0人  林哥学前端

关于vue对象的生命周期,我们之前已经用过一个mounted了,这节课我们把它的所有生命周期都学一遍,作为初学者,我们只需要大概知道这些生命周期函数的大概执行时机就行了,具体的细节可以以后熟练运用vue以后再学习也不晚。

首先每一个vue对象都有自己的生命周期,就像人一样,都有出生、学习、工作、生活、最后到死亡这样一个过程,那vue对象的生命周期分为四个阶段,创建(create),挂载(mount),更新(update),卸载(unmount)

创建可以理解为vue对象产生的阶段,
创建后vue对象就会挂载,就是把vue对象显示到dom中,我们在页面上就能看见了
当vue对象里的data发生变化时,就会触发更新阶段了
最后vue对象不再使用时,也就是它的unmount方法被调用时,就是卸载阶段

那么这四个阶段,每个阶段对应两个生命周期函数,一个之前、一个之后,还是比较好记的,
结合官方的图,我们就知道他们分别是什么,和执行顺序了


这8个生命周期函数:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeUnmount、unmounted
如果开始学习时候嫌太多,记不住,可以只先记住一个mounted,表示vue组件已经显示在dom里了,最常用的就是在mounted回调函数里开始向后台请求数据。

我们来写一个完整的例子,来直观体验一下生命周期函数的执行。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>vue3</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="https://www.unpkg.com/vue@next"></script>
    <script>
      // 生命周期示例
      const vueApp = Vue.createApp({
        data() {
          return {
            list: ['钢铁侠', '蜘蛛侠', '美国队长', '蝙蝠侠'],
          }
        },
        beforeCreate() {
          console.log('创建之前')
        },
        created() {
          console.log('创建完成')
        },
        beforeMount() {
          console.log('挂载之前')
        },
        mounted() {
          console.log('挂载完成')
          setTimeout(() => {
            this.list.push('死侍')
          }, 3000)
        },
        beforeUpdate() {
          console.log('更新之前')
        },
        updated() {
          console.log('更新完成')
        },
        beforeUnmount() {
          console.log('卸载之前')
        },
        unmounted() {
          console.log('卸载完成')
        },
        template: `
          <div>生命周期示例</div>
          <ul>
            <li v-for="item in list">{{item}}</li>  
          </ul>
        `,
      })
      vueApp.mount('#app')
      setTimeout(() => {
        vueApp.unmount()  // 最后调用组件unmount方法
      }, 6000)
    </script>
  </body>
</html>

我们可以看到先输出了

创建之前
创建完成
挂载之前
挂载完成

3秒后在mounted里我们更改了list的值,触发了更新,输出

更新之前
更新完成

又过了3秒,我们调用了组件的unmount方法,在代码的最后,输出了

卸载之前
卸载完成

同时我们看到dom里的内容也没有了。

大家在熟练的使用了vue的基本操作以后,一定要回过头来再重新复习关于生命周期的知识,因为这些内容可以说是在面试中最常见的了。

上一篇下一篇

猜你喜欢

热点阅读