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

时间:2018-05-30 05:44:39

标签: javascript reactjs

我听说过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生命周期方法?

1 个答案:

答案 0 :(得分:0)

根据不同的用例,有两种方法可以解决这个问题。

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