Vue.js 中父子组件的生命周期

阅读时长 7 分钟读完

Vue.js 是一款流行的前端框架,它采用组件化的开发模式,将页面拆分成多个组件,便于开发和维护。在 Vue.js 中,组件有自己的生命周期,包括创建、更新和销毁阶段。而在父子组件的关系中,父组件和子组件的生命周期有着不同的调用顺序和时机。本文将详细介绍 Vue.js 中父子组件的生命周期,帮助开发者更好地理解组件之间的关系和交互。

父组件的生命周期

父组件是包含子组件的容器,它的生命周期包括:

beforeCreate

在父组件实例化之前调用,此时父组件的 data 和 methods 还未初始化。

created

在父组件实例化完成之后调用,此时父组件的 data 和 methods 已经初始化。但是子组件还未被创建。

beforeMount

在父组件挂载到页面之前调用,此时子组件已经被创建,但还未被挂载到父组件中。

mounted

在父组件挂载到页面之后调用,此时父组件和子组件都已经被挂载到页面中,可以进行 DOM 操作。

beforeUpdate

在父组件数据更新之前调用,此时父组件的数据已经发生了变化,但还未渲染到页面上。

updated

在父组件数据更新之后调用,此时父组件的数据已经渲染到页面上,可以进行 DOM 操作。

beforeDestroy

在父组件销毁之前调用,此时父组件还存在,但子组件已经被销毁。

destroyed

在父组件销毁之后调用,此时父组件和子组件都已经被销毁,不再存在于页面中。

子组件的生命周期

子组件是被父组件包含的组件,它的生命周期包括:

beforeCreate

在子组件实例化之前调用,此时子组件的 data 和 methods 还未初始化。

created

在子组件实例化完成之后调用,此时子组件的 data 和 methods 已经初始化。

beforeMount

在子组件挂载到页面之前调用,此时子组件还未被挂载到父组件中。

mounted

在子组件挂载到页面之后调用,此时子组件已经被挂载到父组件中,可以进行 DOM 操作。

beforeUpdate

在子组件数据更新之前调用,此时子组件的数据已经发生了变化,但还未渲染到页面上。

updated

在子组件数据更新之后调用,此时子组件的数据已经渲染到页面上,可以进行 DOM 操作。

beforeDestroy

在子组件销毁之前调用,此时子组件还存在于父组件中。

destroyed

在子组件销毁之后调用,此时子组件已经从父组件中移除,不再存在于页面中。

父子组件的生命周期

父组件和子组件之间的生命周期存在一定的交互关系,具体表现如下:

beforeCreate

在父组件和子组件都还未实例化时调用。

created

在父组件和子组件都实例化完成后调用。

beforeMount

在父组件挂载到页面之前调用,此时子组件已经被创建,但还未被挂载到父组件中。

mounted

在父组件挂载到页面之后调用,此时父组件和子组件都已经被挂载到页面中。

beforeUpdate

在父组件和子组件数据更新之前调用。

updated

在父组件和子组件数据更新之后调用。

beforeDestroy

在父组件和子组件销毁之前调用,此时子组件还存在于父组件中。

destroyed

在父组件和子组件销毁之后调用,此时父组件和子组件都已经被销毁,不再存在于页面中。

示例代码

下面是一个简单的父子组件示例,展示了父组件和子组件的生命周期调用顺序:

-- -------------------- ---- -------
--------- -----
------

------
  ----- ----------------
  ------------- ------------------
  ------- ------------------------------------------------------------
-------

------
  ---- ---------
    ------------
    ----------- ------- ------
    ------- ------------------------------------
    ---------------- -------------------------------------------
  ------

  --------
    -- ---
    --- -------------- - -
      ------ -----------------
      --------- ----------------------------- ------------ --------------
      ------------- -------- -- -
        ---------------- ---------------
      --
      -------- -------- -- -
        ---------------- ----------
      --
      ------------ -------- -- -
        ---------------- --------------
      --
      -------- -------- -- -
        ---------------- ----------
      --
      ------------- -------- -- -
        ---------------- ---------------
      --
      -------- -------- -- -
        ---------------- ----------
      --
      -------------- -------- -- -
        ---------------- ----------------
      --
      ---------- -------- -- -
        ---------------- ------------
      -
    --

    -- ---
    --- --- - --- -----
      --- -------
      ----------- -
        ------------------ --------------
      --
      ----- -
        -------- ------- --------
      --
      ------------- -------- -- -
        ---------------- ---------------
      --
      -------- -------- -- -
        ---------------- ----------
      --
      ------------ -------- -- -
        ---------------- --------------
      --
      -------- -------- -- -
        ---------------- ----------
      --
      ------------- -------- -- -
        ---------------- ---------------
      --
      -------- -------- -- -
        ---------------- ----------
      --
      -------------- -------- -- -
        ---------------- ----------------
      --
      ---------- -------- -- -
        ---------------- ------------
      --
      -------- -
        -------------- -------- -- -
          ------------ - ------- --------
        -
      -
    ---
  ---------
-------

-------
展开代码

以上代码中,父组件和子组件的生命周期函数都输出了对应的调用信息,可以在控制台中查看。同时,父组件中的数据 message 通过 props 传递给了子组件,实现了父子组件之间的数据交互。开发者可以根据自己的需求和业务逻辑,灵活使用组件的生命周期函数,实现更加高效和优雅的开发。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d543bca941bf71349bae85

纠错
反馈

纠错反馈