成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

[譯]React ES6 class constructor super()

terasum / 1800人閱讀

摘要:會自行設(shè)置在組件的其他地方以供訪問。將傳入的作用是可以使你在內(nèi)訪問它完善后如果你只是想在別處訪問它,是不必傳入的,因?yàn)闀詣訛槟阍O(shè)置好

原博文地址: http://cheng.logdown.com/posts/2016/03/26/683329

當(dāng)我們像下面這樣使用ReactES6 class語法創(chuàng)建一個(gè)組件的時(shí)候:

class MyClass extends React.component {
    constructor(){
        super()
    }
}

不禁會提出兩個(gè)問題:

constructor里面調(diào)用super是否是必要的?

supersuper(props)的區(qū)別?

解答一:

僅當(dāng)存在constructor的時(shí)候必須調(diào)用super,如果沒有,則不用

如果在你聲明的組件中存在constructor,則必須要加super,舉個(gè)栗子:

class MyClass extends React.component {
    render(){
        return 
Hello { this.props.world }
; } }

這段代碼完美無誤,你不需要為之去調(diào)用super,然而,如果在你的代碼中存在consturctor,那你必須調(diào)用

class MyClass extends React.component {
    constructor(){
        console.log(this) //Error: "this" is not allowed before super()

    }
}

之所以會報(bào)錯(cuò),是因?yàn)槿舨粓?zhí)行super,則this無法初始化。

你也許會抱著僥幸心理猜測:那我直接寫個(gè)空的constructor就得了唄~,然而,在ES6中的class語法中,只要你的class是子類,那必須得調(diào)用super,換句話說,有constructor就得有super(當(dāng)然,子類也可以沒有constructor

解答二

僅當(dāng)你想在constructor內(nèi)使用props才將props傳入superReact會自行props設(shè)置在組件的其他地方(以供訪問)。
props傳入super的作用是可以使你在constructor內(nèi)訪問它:

class MyClass extends React.component{
    constructor(props){
        super();
        console.log(this.props); // this.props is undefined

    }
}

完善后:

class MyClass extends React.component{
    constructor(props){
        super(props);
        console.log(this.props); // prints out whatever is inside props

    }
}

如果你只是想在別處訪問它,是不必傳入props的,因?yàn)?b>React會自動為你設(shè)置好:

class MyClass extends React.component{
    render(){
        // There is no need to call `super(props)` or even having a constructor 

        // this.props is automatically set for you by React 

        // not just in render but another where else other than the constructor

        console.log(this.props);  // it works!

    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/81269.html

相關(guān)文章

  • []React ES6 class constructor super()

    摘要:當(dāng)我們在寫時(shí)候會用到中的語法比較常見的情況如下這里有兩個(gè)問題是否有必要在中調(diào)用函數(shù)調(diào)用和有何區(qū)別解答只有當(dāng)你有一個(gè)時(shí)候調(diào)用才是必須的看代碼上述代碼完全符合規(guī)定所以你其實(shí)并沒有必要去為你創(chuàng)建的每個(gè)調(diào)用話分兩頭如果你的代碼中有你就必須調(diào)用出現(xiàn)上 當(dāng)我們在寫React時(shí)候 會用到ES6中的class語法 ,比較常見的情況如下: class MyClass extends React.Comp...

    justjavac 評論0 收藏0
  • []在 React.js 中使用 ES6+

    摘要:如果是在中,我們也許只能這樣做但是,在中,我們不僅可以在對象字面量屬性的定義中使用表達(dá)式,還有使用使用字符串模板析構(gòu)擴(kuò)展運(yùn)算符我們在編寫組件的過程中,經(jīng)常遇到要從父組件要把自己的很多屬性多傳給子組件的情況。 原文地址: http://babeljs.io/blog/2015/06/07/react-on-es6-plus/ showImg(http://7xiyp1.com1.z0.g...

    Enlightenment 評論0 收藏0
  • [] React 組件中綁定回調(diào)

    摘要:好的方案在構(gòu)造函數(shù)中仍然使用,現(xiàn)在我們只要繞過每次渲染都要生成新的函數(shù)的問題就可以了。我們可以通過只在構(gòu)造函數(shù)中綁定回調(diào)的上下問來解決這個(gè)問題,因?yàn)闃?gòu)造函數(shù)只會調(diào)用一次,而不是每次渲染都調(diào)用。 原文:Binding callbacks in React components 在組件中給事件綁定處理函數(shù)是很常見的,比如說每當(dāng)用戶點(diǎn)擊一個(gè)button的時(shí)候使用console.log打印一些...

    Lin_R 評論0 收藏0
  • 】Handling Events

    摘要:如果你使用實(shí)驗(yàn)性屬性初始化語法,你能用這方法來正確綁定回調(diào)函數(shù)的綁定這語法在中默認(rèn)支持。然而,如果這回調(diào)函數(shù)是作為一個(gè)傳遞到更下一級的組件中的時(shí)候,些組件可能會做一個(gè)額外的重新渲染。 下面是react官方文檔的個(gè)人翻譯,如有翻譯錯(cuò)誤,請多多指出原文地址:https://facebook.github.io/re... Handling events with React element...

    sugarmo 評論0 收藏0
  • []JavaScript ES6 class指南

    摘要:前言又稱通過一些新的關(guān)鍵字,使類成為了中一個(gè)新的一等公民。類聲明在中,有兩個(gè)聲明類的方式。在使用了新的關(guān)鍵字后在底層,所做的,也只是將這個(gè)方法添加為構(gòu)造函數(shù)的一個(gè)屬性。在想要調(diào)用父類的構(gòu)造函數(shù)時(shí),你可以簡單地將關(guān)鍵字視作一個(gè)函數(shù)使用,如。 前言 EcmaScript 2015 (又稱ES6)通過一些新的關(guān)鍵字,使類成為了JS中一個(gè)新的一等公民。但是目前為止,這些關(guān)于類的新關(guān)鍵字僅僅是建...

    CoderDock 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<