哪种 React 生命周期方法是 componentWillRecieveProps 的良好替代品?



我听说过getDerivedStateFromProps但它没有按照我想要的方式工作。

我有这个代码:

class App extends Component {
static getDerivedStateFromProps(props, state) {
console.log("Get derived state from props called");
return null;
}
render() {
return (
<button onClick={() => this.setState({})}>Change State</button>
);
}
}

单击按钮调用getDerivedStateFromProps。这不是我需要的。我想要一个仅在收到新道具时才调用的函数。当内部状态更改时,不应调用此函数。

我打算在模态表单方案中使用它。当组件接收到一个对象作为道具时,组件应将此对象转换为表单,然后将该表单放入状态中。如果我使用getDerivedStateFromProps,因为它在每个this.setState()中都被调用,它不会反映表单中的更改,因为每当用户键入时,都会触发一个this.setState(),而不是将更改设置为状态,而是初始对象是。

我应该使用哪种 React 生命周期方法?

根据不同的用例,有几种方法可以解决此问题。

  1. 如果添加了新 prop,则可以在Child组件中检查这些新 prop,并且可以在新对象存在的情况下调用用户定义的函数。
  2. getDerivedStateFromProps(props, state, prevProps)是一个静态方法,this不存在于其中,这意味着您必须根据各种条件返回状态。也就是说,在大多数情况下,让它默认工作。如果要更改其功能,请进行检查并返回修改后的状态。

希望它能回答:)

最新更新