我听说过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
。这不是我需要的。我想要一个仅在收到新道具时被称为的功能。当内部状态发生变化时,不应调用此函数。
我打算在模态形式场景中使用它。当组件接收对象作为prop时,组件应将此对象转换为表单,然后将该表单放入该状态。如果我使用getDerivedStateFromProps
,因为它会在每个this.setState()
中调用,因此无法反映表单中的更改,因为无论何时用户键入,都会触发this.setState()
,而不是更改被设置为状态,初始对象是。
我应该使用哪种React生命周期方法?
答案 0 :(得分:0)
根据不同的用例,有两种方法可以解决这个问题。
Child
组件中检查这些新道具,并且可以在新对象存在的情况下调用用户定义的函数。getDerivedStateFromProps(props, state, prevProps)
是静态方法,this
不存在,这意味着您必须根据各种条件返回状态。也就是说,在大多数情况下让它在默认情况下工作。如果您想要更改其功能,请进行检查并返回修改后的状态。希望它能回答:)