Custom Elements 生命周期

Custom Elements 生命周期

Custom Elements 是一种 Web Components 规范的实现,它能够定义自定义的 HTML 元素,包括样式、行为、事件等,进而扩展原有的 HTML 标签,提升了 Web 应用的可复用性和可维护性。

Custom Elements 生命周期是指自定义元素从被创建到被销毁的整个生命周期,它包括以下几个阶段:

  • 定义阶段(Define phase)
  • 生命周期阶段(Lifecycle phase)
  • 关注点变化阶段(Attribute/Property change phase)
  • 移除阶段(Remove phase)

定义阶段

在定义阶段,我们使用 window.customElements.define() 方法来定义自己的 Custom Elements,这个方法接受两个参数:元素名称以及自定义元素的类定义。

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

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

在这个阶段,自定义元素还没有被添加到文档中,因此并不存在生命周期实例。

生命周期阶段

创建 Custom Elements 的实例是在将自定义元素添加到文档中进行的,这个过程可以使用 DOM API document.createElement() 或者直接在 HTML 中编写标签的形式。

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

在生命周期阶段中,Custom Elements 依次经历以下步骤:

  1. constructor:调用构造函数。这是创建 Custom Elements 的实例的第一步,完成该阶段后,Custom Elements 实例已创建完成,但尚未添加到文档中,因此并没有视图上的展示效果。你可以在 constructor 中初始化一些属性,事件,然后可以使用拦截器对元素属性进行监听。

    ----- --------- ------- ----------- -
        ------------- -
            --------
            -- -----
            ------------- - --------
            -- -----------
            ----------------------------- - --- ------------------------------------ -
                ------------- -------- ------ --------- ---------- -
                    -- --------- --- --------- -
                        --------------------- ------ --------- -----------
                    -
                -
            --
        -
    -
  2. connectedCallback:元素插入到文档中,此时元素已经可以访问到文档中的元素。在 connectedCallback 中,可以将需要的 CSS,JS 或者其他资源动态加载到页面上。

    ----- --------- ------- ----------- -
        ------------------- -
            -------------- - --------------------- ------------
            ----------------
        -
        ---------- -
            --------
        -
    -
  3. disconnectedCallback:元素从文档中移除,此时元素再次变得不可见,不再访问到文档中的元素。

    ----- --------- ------- ----------- -
        ---------------------- -
            ------
            ---------------
        -
        --------- -
            --------
        -
    -
  4. attributeChangedCallback:元素的属性发生变化,通过改变元素的属性来触发函数的调用。

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

关注点变化阶段

使用属性属性来控制 Custom Elements 的行为是非常有用的,属性的变化有时候会影响 Custom Elements 的内部状态,一般来说我们可以通过属性拦截器,在属性值变化时进行修改。

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

移除阶段

当 Custom Elements 被从文档树中移除时,会自动执行 disconnectedCallback() 函数,在这个阶段我们可以执行一些清理工作,比如停止计时器,取消事件订阅等等。

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

结论

自定义元素是一种非常有用的技术,可以帮助我们创造自己的 Web 组件,并且提高代码的复用和可维护性,深入了解 Custom Elements 的生命周期阶段可以让我们更好的了解他们如何工作的,并且在开发或维护期间更加高效的处理 Custom Elements 的状态。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6738901e317fbffedf11588e