簡體   English   中英

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

[英]Which React lifecycle method is a good replacement for 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 這不是我需要的。 我想要一個只在收到新道具時調用的函數。 當內部狀態發生變化時,不應調用此函數。

我打算在模態形式場景中使用它。 當組件接收對象作為prop時,組件應將此對象轉換為表單,然后將該表單放入該狀態。 如果我使用getDerivedStateFromProps ,因為它在每個this.setState()被調用,它不會反映表單中的更改,因為每當用戶鍵入時,觸發this.setState() ,而不是將更改設置到狀態,初始對象是。

我應該使用哪種React生命周期方法?

根據不同的用例,有幾種方法可以解決這個問題。

  1. 如果添加了新的道具,則可以在Child組件中檢查這些新道具,並且可以在新對象存在的情況下調用用戶定義的函數。
  2. getDerivedStateFromProps(props, state, prevProps)是一個靜態方法和this不一樣的,這意味着你必須返回基於各種條件的狀態存在。 也就是說,在大多數情況下讓它在默認情況下工作。 如果要更改其功能,請進行檢查並返回已修改的狀態。

希望它的答案:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM