Day 13 Component Lifecycle -2

第 13 天啦~~~

昨天我们谈到 lifecycle,

那我们今天来稍微介绍一下,在生命周期每个阶段的流程吧

那在 v15 -> v16 时,

React 官方有针对 lifecycle 做一些调整,

那某些不安全的部份,会在前面多一个 UNSAFE_

来提醒开发者尽量不要使用

Mounting

元件建立的流程,还未再入到实体网页时

  1. constructor
  • statefunction or 其他变数 初始化的地方
  1. UNSAFE_componentWillMount
  • component 初始化的时候,在 render 执行之前
  • 有建立 getDerivedStateFromProps 会失效
  1. static getDerivedStateFromProps(nextProps, prevState)
  • component 尚未 render 之前,用来与父层props 做交接,需回传一个物件,此物件内容会被当做最新的 state
  • 这个 functionstatic 固是抓不到当下 component 的 this
  • 有建立此 function , UNSAFE_componentWillMount 会失效
  1. render
  • 欲要渲染到真实画面前的最後动作,在这里回传 react element ,会根据 react element 的变化,来影响真实画面
  1. componentDidMount
  • 只会执行一次,在 component 渲染到真实画面之後触发

Updating

元件画面更新的流程,再触发 re-render 会启用

  1. UNSAFE_componentWillReceiveProps(nextProps)
  • 由父层 props 更新时会被触发
  • 有建立 getDerivedStateFromProps 会失效
  1. getDerivedStateFromProps
  2. shouldComponentUpdate(nextProps, nextState)
  • Updating 的流程启动之後,在 render 之前,返回 false or true,来判断是否要进入下一个流程
  1. UNSAFE_componentWillUpdate(nextProps, nextState)
  • render 之前,最後一动
  • 有建立 getDerivedStateFromProps 会失效
  1. render
  2. getSnapshotBeforeUpdate(prevProps, prevState)
  • 真实画面更新之前,当有 return 值,则会带入到 componentDidUpdate
  1. componentDidUpdate(prevProps, prevState, snapshot)
  • 真实画面更新完之後会被触发
  • getSnapshotBeforeUpdate返回值则会带入到第三个参数

Unmounting

当 component 要被移除之时

  1. componentWillUnmount
  • 在 component 要被卸载之前

上面这些就是 React 的生命周期,

基本上,最常用到的应该会是,

componentDidMount & componentDidUpdate

第一个是在画面初始化结束,要执行相应的动作,

第二个则是在更新後,针对某些值来判断是否要继续执行某些动作

其他的,使用时目前还抓不太准,

假如各位有经验的话欢迎留言喔~


<<:  [Day18] Vite 出小蜜蜂~ 位置校正 Position Adjustment!

>>:  Swift纯Code之旅 Day18. 「选取TableViewCell」

Material UI in React [ Day 25 ] Styles Advanced

今天要讲解的内容,在前面讲解theme的应用时,有稍微讲解了一些基本的应用,官方文件内前半部的内容我...

[Tableau Public] day 28:制作台湾姓氏分布-数据仪表板

今天我们来把前面做的五张工作表合成一张仪表板吧! 首先新增一张仪表板,名称为「107年6月_台湾各姓...

Day7 NiFi - Connection

前面我们介绍完了 Processor 之後,一个完整的 Data Pipeline 就是要将这些 P...

VPC (一)

VPC介绍 介绍完关於GCP使用这权限设置,再来需要了解的是GCP中的网路层,在网路部分可以说是极其...

JS 08 - 静态方法

大家好! 我们进入今天的主题吧! 物件方法 如果要推入项目至阵列,我们会使用原型方法。 但是,为什麽...