Stemciljs學習2、元件生命週期
阿新 • • 發佈:2022-12-03
元件有許多生命週期方法,可用於瞭解元件何時“將”和“執行”載入、更新和呈現。可以將這些方法新增到元件中,以便在正確的時間掛接到操作中。
在元件類中實現以下方法之一,Stencil 將以正確的順序自動呼叫它們:
單元件的生命週期
import { Component, Host, h, Prop, Watch } from '@stencil/core'; @Component({ tag: 'web-text', styleUrl: 'web-text.css', shadow: true, }) export class WebText { @Prop() text: string; @Watch('text') handlerTextWatcher(val: string, oldVal: string) { console.log('新值:', val, ',舊值:', oldVal); console.log('生命週期:watch'); } connectedCallback() { console.log('生命週期:connectedCallback'); } componentWillLoad() { console.log('生命週期:componentWillLoad'); } componentWillRender() { console.log('生命週期:componentWillRender'); } render() { console.log('生命週期:render'); return <Host>{this.text}</Host>; } componentDidRender() { console.log('生命週期:componentDidRender'); } componentDidLoad() { console.log('生命週期:componentDidLoad'); } componentShouldUpdate() { console.log('生命週期:componentShouldUpdate'); } componentWillUpdate() { console.log('生命週期:componentWillUpdate'); } componentDidUpdate() { console.log('生命週期:componentDidUpdate'); } disconnectedCallback() { console.log('生命週期:disconnectedCallback'); } }
未更改Prop text時console輸入的結果
更改Prop text後console輸出的結果
具體的生命圖示如下(源自官方網站)
更多生命週期相關的細節請參考官方網站
如果要更改
Prop
和State
的值,建議在componentWill開頭的生命週期中去更改,因為帶will的生命週期會在元件渲染前執行,在did生命週期內區修改Prop
和State
的值,有可能會造成死迴圈;如果必須在did生命週期內區修改Prop
和State
的值,請一定要做好前置判斷
巢狀元件的生命週期
<component-a> <component-b> <component-c></component-c> </component-b> </component-a>
-
component-a
-componentWillLoad()
-
component-b
-componentWillLoad()
-
component-c
-componentWillLoad()
-
component-c
-componentDidLoad()
-
component-b
-componentDidLoad()
-
component-a
-componentDidLoad()
結束語
在上一篇中)我們講解了如何使用stemcil-cli
搭建元件庫的方式;那麼經過本篇的講解,我們已經瞭解了其元件的生命週期;下一篇將講解stenciljs
的相關裝飾器。