React 新版生命周期

与旧版生命周期相比,React 生命周期即将废弃componentWillMount()componentWillReceiveProps()componentWillUpdate()三个钩子,现在使用会出现警告,下一个大版本需要加上UNSAFE_前缀才能使用,以后可能会被彻底废弃,不建议使用。

新版增加了两个钩子:getDerivedStateFromProps()getSnapshotBeforeUpdate()

1. 初始化阶段

ReactDOM.render()触发

  1. constructor()

  2. getDerivedStateFromProps()

    在调用render()方法之前调用,并且在初始挂载及后续更新时都会被调用。它应返回一个对象来更新state,如果返回 null 则不更新任何内容

    使用场景(罕见):state的值在任何时候都取决于props

  3. render()

  4. componentDidMount()

    一般在这个钩子中做一些初始化的事,例如:开启定时器、发送网络请求、订阅消息

2. 更新阶段

由组件内部this.setSate()或父组件重新render()触发

  1. getDerivedStateFromProps()

  2. shouldComponentUpdate()

  3. render()

  4. getSnapshotBeforeUpdate()

    最近一次渲染输出(提交到 DOM 节点)之前调用。它使得组件能在发生更改之前从 DOM 中捕获一些信息(例如,滚动位置)。此生命周期的任何返回值作为参数传递给 componentDidUpdate()

  5. componentDidUpdate()

3. 卸载组件

ReactDOM.unmountComponentAtNode()触发

  1. componentWillUnmount()

    组件即将卸载时触发

    一般在这个钩子中做一些收尾的事,例如:关闭定时器、取消订阅消息

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
React 16版本之后,生命周期方法发生了一些变化。以下是React新版生命周期方法: 1. constructor(props):组件实例化时调用,用于初始化状态和绑定事件处理函数。 2. static getDerivedStateFromProps(props, state):该方法在组件实例化及每次接收到新的props时调用,用于根据props的变化来更新state。 3. render():必选的方法,用于渲染组件的UI。 4. componentDidMount():组件第一次渲染后调用,常用于进行异步操作、网络请求或订阅事件。 5. shouldComponentUpdate(nextProps, nextState):决定组件是否需要重新渲染,默认返回true。通过比较新旧props和state,可以在此方法中进行性能优化。 6. getSnapshotBeforeUpdate(prevProps, prevState):在组件更新之前调用,返回一个值作为componentDidUpdate()的第三个参数。 7. componentDidUpdate(prevProps, prevState, snapshot):组件更新后调用,可以进行DOM操作或网络请求等。 8. componentWillUnmount():组件被卸载或销毁之前调用,进行必要的清理工作,如取消订阅、清除定时器等。 9. static getDerivedStateFromError(error):在子组件抛出错误后调用,返回一个新的state以渲染错误信息。 10. componentDidCatch(error, info):在子组件抛出错误后调用,常用于记录错误信息或发送错误报告。 以上是React新版中常用的生命周期方法,其中一些方法是可选的,根据需要选择实现即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值