react中constructor和super的使用


一:什么時候要用constructor,需要定義state的時候必須要寫,要調用super(),而且要傳入props參數即super(props)。如果不定義state的話,有無constructor沒區別。

二:什么時候要調用super,如果要在子類中使用父類的屬性和方法,就要調用super(父類接受的參數),即要在constructor中使用this.props的時候就必須要調用super(props)。

例如:

constructor(){
    super();      //沒有用到this.props所以參數props就可以不加
    this.state={  //定義了state必須要寫constructor,必須調用super
        list:['aaa', 'bbb', 'ccc']
    }
}

三:可以不寫constructor,但是只要寫了constructor就必須要有super。為什么?這是因為子類自己的this對象,必須先通過父類的構造函數完成塑造,得到與父類同樣的實例屬性和方法,然后對其進行加工,加上子類自己的實例屬性和方法。如果不調用super方法,子類就得不到this對象。

四:為什么可以省略,由於ES6的繼承規則,不管子類寫不寫constructor,在new實例的過程都會自動給補上constructor。

注意:子類必須在constructor方法中調用super方法,否自新建實例時會報錯。這是因為子類自己的this對象,必須先通過父類的構造函數完成塑造,得到父類同樣的實例屬性和方法,然后再對其進行加工,加上子類自己的屬性和方法。如果不調用super方法,子類就得不到this對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM