React中constructor及super

constructor( )

Reactconstructor表示父類的構(gòu)造方法,用來(lái)新建父類的this對(duì)象,這是ES6對(duì)類的默認(rèn)方法,該方法是類中必須有的,如果沒(méi)有顯示定義,則會(huì)默認(rèn)添加空的constructor( )方法。

class Point {
}

// 相當(dāng)于
class Point {
  constructor() {}
}
super( )

class方法中,繼承使用 extends 關(guān)鍵字來(lái)實(shí)現(xiàn)。子類 必須 在 constructor( )調(diào)用 super( )方法,否則新建實(shí)例時(shí)會(huì)報(bào)錯(cuò),因?yàn)樽宇悰](méi)有自己的this對(duì)象,而是繼承父類的this對(duì)象,然后對(duì)其進(jìn)行加工,如果不調(diào)用super方法;子類就得不到this對(duì)象。
super時(shí):


無(wú)super時(shí):

很明顯自動(dòng)就報(bào)錯(cuò)了,所以只要有constructor就必須有super

super or super(props)

先看個(gè)例子:

class Main extends React.Component {
    constructor() {
        super();
        this.state = {count: 1};
    }

    render() {
        return (
            <div>
                {this.state.count}
                <App count={this.state.count}/>
            </div>
        );
    }
}

class App extends React.Component {
    constructor() { //沒(méi)有寫props
        super();
    }

    render() {
        return (
            <div>
                {this.props.count}
            </div>
        );
    }
}

運(yùn)行后顯示正確,當(dāng)在constructorsuper中寫了props,也毫無(wú)影響,運(yùn)行顯示正確,那么將App組件中的constructor改為:

constructor() {
        super();
        this.state = {c: this.props.count};
}

顯示部分改為:

<div>
       {this.state.c}
</div>

那么報(bào)錯(cuò)如下:


當(dāng)把App組件中的constructor改為:

constructor(props) {
        super(props);
        this.state = {c: this.props.count};
    }

那么運(yùn)行顯示正確

所以說(shuō)super()super(props)的區(qū)別就是你是否需要在構(gòu)造函數(shù)內(nèi)使用this.props,如果需要那么你就必須要寫props,如果不需要,那么寫不寫效果是一樣的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Scala與Java的關(guān)系 Scala與Java的關(guān)系是非常緊密的!! 因?yàn)镾cala是基于Java虛擬機(jī),也就是...
    燈火gg閱讀 3,608評(píng)論 1 24
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,734評(píng)論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開(kāi)發(fā)和運(yùn)行環(huán)境,java的開(kāi)發(fā)工...
    ZaneInTheSun閱讀 2,815評(píng)論 0 11
  • 謝謝你鳥(niǎo)類!謝謝你娶了這樣的我并嬌寵一生! 謝謝你鳥(niǎo)類!謝謝你現(xiàn)在還想著我,我每天投射,只要看見(jiàn)貓,就代表你想我,...
    貓公主喵閱讀 234評(píng)論 0 0
  • 人生中什么是最困難的?是整理,什么是最重要的呢,還是整理。 人的欲望和夢(mèng)想很多,...
    愛(ài)之涯閱讀 339評(píng)論 0 1

友情鏈接更多精彩內(nèi)容