iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

前端菜鳥的react初體驗系列 第 4

前端菜鳥的react初體驗 Day4-生命週期

  • 分享至 

  • xImage
  •  

什麼是生命週期

在問什麼是生命週期之前,我意識到,我應該先問的問題是:
為什麼要有生命週期?

為了要讓一切組件化,所以react裡面的所有html element都是透過react渲染出來的,
那麼問題來了,什麼時候要渲染呢?

還記得初學js的時候,光是下面這行引入js就可以先撞一次牆。

<script src="JavaScript 檔案位址.js"></script>.

好不容易學會事件監聽,想要讓button動起來,結果點了完全沒反應,說什麼找不到我的button,what?
就在那裏阿,你看不到嗎!(手指螢幕)

於是,生命週期便出現了。
在react的世界裡,生命週期決定了一個element的出生(Mounting)、變化(Updating)與死亡(Unmounting)。

生命週期的階段

https://ithelp.ithome.com.tw/upload/images/20220919/20152660pxpJdhEKYe.png

Mounting(出生、創造、安裝)

  • constructor()
    constructor會在render之前觸發,可寫可不寫,是拿來 1. 初始化state的地方。 2. 為event handler 方法綁定 instance。
constructor(props) {
 super(props);
 this.state = { counter: 0 }; /*初始化state*/
 this.handleClick = this.handleClick.bind(this);/*綁定 instance。*/
}
  • static getDerivedStateFromProps()
  • render()
    從頭到尾不斷再說的渲染就是這個,render被呼叫的時候,會在頁面上渲染Dom node或是我們創造的component
  • componentDidMount()
    當component被mount之後,就會馬上觸發,所以初始化的可以放在這裡,比如計時器之類的。

Updating(變化、更新)

  • static getDerivedStateFromProps()
  • shouldComponentUpdate()
  • render()
  • getSnapshotBeforeUpdate()
  • componentDidUpdate()
    會在更新之後被呼叫,但不會在第一次render的時候被呼叫。

Unmounting(死亡、銷毀)

  • componentWillUnmount()
    會在 component 被 unmount 和 destroy 後呼叫,這裡就可以清楚當初初始化的東西,比如計時器。

上一篇
前端菜鳥的react初體驗 Day3
下一篇
前端菜鳥的react初體驗 Day5-State
系列文
前端菜鳥的react初體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言