React新生命周期--getDerivedStateFromProps
    		       		warning:
    		            这篇文章距离上次修改已过446天,其中的内容可能已经有所变动。
    		        
        		                
                getDerivedStateFromProps 是 React 组件类的一个静态方法,它在组件被装载和更新时调用。它应该返回一个对象来更新状态,或者返回 null 表示不需要更新。
这个方法的主要目的是用于 state 的依赖于 props 而且不是 state 的直接变体。例如,你可能想要保存最后一个 prop 的值作为一个未维护的状态。
解决方案:
class MyComponent extends React.Component {
  // 初始化state
  constructor(props) {
    super(props);
    this.state = {
      value: props.value
    };
  }
 
  // 使用静态方法
  static getDerivedStateFromProps(props, state) {
    // 当 prop 的 value 改变且和 state 的 value 不一致时,更新 state
    if (props.value !== state.value) {
      return { value: props.value };
    }
    // 如果没有变化,返回 null 表示不更新 state
    return null;
  }
 
  render() {
    return (
      <div>
        {this.state.value}
      </div>
    );
  }
}在这个例子中,每次 value prop 改变,并且和当前的 state 不一致时,getDerivedStateFromProps 会更新组件的 state,导致重新渲染。
注意:这个方法是从类组件中派生状态,如果你在使用函数组件,你应该使用 useEffect 钩子来代替。
评论已关闭