React 已经在 v16.3 版本中废弃了
componentWillMount
、componentWillReceiveProps
和componentWillUpdate
等生命周期方法
getDerivedStateFromProps(props, state)
:这个静态方法在组件实例化、接收到新的 props 或者使用setState
更新 state 时被调用。它接收两个参数:props
和当前的state
。它应该返回一个对象,用于更新组件的 state,或者返回null
,表示不需要更新。与componentWillReceiveProps
的区别是,getDerivedStateFromProps
是一个静态方法,不能访问组件实例的属性或方法。
getSnapshotBeforeUpdate(prevProps, prevState)
:这个方法在组件更新之前被调用,它接收两个参数:prevProps
和prevState
。它允许组件在更新之前捕获一些信息(例如滚动位置),并在更新后使用这些信息(例如恢复滚动位置)。它的返回值将作为第三个参数传递给componentDidUpdate
方法。getSnapshotBeforeUpdate
和过去的componentWillUpdate
是类似的,但有一个关键区别:它在进行 DOM 更新之前被调用,而不是在 DOM 更新之后。
新的钩子函数是为了解决原来的生命周期方法可能引发的一些问题而引入的。新的钩子函数使得 React 组件在编写和理解时更加清晰和可预测。它们提供了一种更灵活、更安全的方法来处理组件的状态和副作用。