最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react組件中的constructor和super知識點整理

 更新時間:2021年08月17日 09:44:28   作者:一直在尋  
這篇文章主要介紹了react組件中的constructor和super知識點整理,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1、react中用class申明的類一些小知識

如上圖:類Child是通過class關鍵字申明,并且繼承于類React。

A、Child的類型是? typeofChild === 'function' , 其實就相當于ES5用function申明的構造函數 function Child() { //申明構造函數 }

B、Child類調用時候( new Child() ),會優(yōu)先執(zhí)行,并且自動執(zhí)行Child的constructor函數。

constructor() {
   console.log('執(zhí)行了constructor')
       return 'hah'
   }

   getName() {
       console.log('執(zhí)行了方法')
   }
}
var dd = new Person();
console.log(dd)

打印如下:

3、Child類中的this? this指向Child的實例,相當于 new Child() 那么它們完全相等嗎? 不是的,react中的this是在new Child()基礎上進行了包裹(下圖)。

上圖為new Child() 下圖為 Child中的this

結論:this是在new Child()基礎上進行了包裹,包含了一些react內部方法,

同時組件中使用Child類( <div> <Child /> </div> ),可以看成 new Child() + react包裹。(細節(jié)待追究。。。)

2、組件中的constructor是否有必要? 如果沒有呢??作用呢???

ES6的知識補充: http://es6.ruanyifeng.com/ 如下:

class ColorPoint extends Point {
}

// 等同于 
class ColorPoint extends Point {
  constructor(...args) {
    super(...args);
  }
}
// 可見沒有寫constructor,在執(zhí)行過程中會自動補上

由ES6的繼承規(guī)則得知,不管子類寫不寫constructor,在new實例的過程都會給補上constructor。

所以:constructor鉤子函數并不是不可缺少的,子組件可以在一些情況略去。

接下來,繼續(xù)看下有沒有constructor鉤子函數有什么區(qū)別:

A、先看有無constructor鉤子函數的 this.constructor

有constructor鉤子函數的 this.constructor

無constructor鉤子函數的 this.constructor

如果能看細節(jié)的話,會得知有constructor鉤子函數時候,Child類會多一個constructor方法。

B、再看有無先看有無constructor鉤子函數的 this,也就是組件實例。

有constructor鉤子函數的 this實例。

無constructor鉤子函數的 this實例。

會得知有constructor鉤子函數時候,可以定義state,如果用戶不定義state的話,有無constructor鉤子函數時候沒有區(qū)別。

結論: 如果組件要定義自己的state初始狀態(tài)的話,需要寫在constructor鉤子函數中,

如果用戶不使用state的話,純用props接受參數,有沒有constructor鉤子函數都可以,可以不用constructor鉤子函數。

再者如果不使用state,那么為什么不使用 無狀態(tài)組件(建議使用)呢???

3、super中的props是否必要? 作用是什么??

有的小伙伴每次寫組件都會習慣性在constructor和super中寫上props,那么這個是必要的嗎??

如圖:

首先要明確很重要的一點就是:

可以不寫constructor,一旦寫了constructor,就必須在此函數中寫super(),

此時組件才有自己的this,在組件的全局中都可以使用this關鍵字,

否則如果只是constructor 而不執(zhí)行 super() 那么以后的this都是錯的!?。?/p>

來源ES6 :http://es6.ruanyifeng.com/

但是super中必須寫參數props嗎?? 答案是不一定,先看代碼:

有props:

無props:

可以得出結論:當想在constructor中使用this.props的時候,super需要加入(props),

此時用props也行,用this.props也行,他倆都是一個東西。(不過props可以是任意參數,this.props是固定寫法)。

如圖:

如果在custructor生命周期不使用 this.props或者props時候,可以不傳入props。

下面是一個使用props的場景,此時別忘了componentWillReceiveProps 生命周期喲。

參考另一篇文章react的生命周期需要知道的

接上:如果constructor中不通過super來接收props,在其他生命周期,

諸如componentWillMount、componentDidMount、render中能直接使用this.props嗎??

結論:可以的,react在除了constructor之外的生命周期已經傳入了this.props了,完全不受super(props)的影響。

所以super中的props是否接收,只能影響constructor生命周期能否使用this.props,其他的生命周期已默認存在this.props

到此這篇關于react組件中的constructor和super知識點整理的文章就介紹到這了,更多相關react組件constructor和super內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • react學習每天一個hooks?useWhyDidYouUpdate

    react學習每天一個hooks?useWhyDidYouUpdate

    這篇文章主要為大家介紹了react學習每天一個hooks?useWhyDidYouUpdate使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 用React-Native+Mobx做一個迷你水果商城APP(附源碼)

    用React-Native+Mobx做一個迷你水果商城APP(附源碼)

    這篇文章主要介紹了用React-Native+Mobx做一個迷你水果商城APP,功能需要的朋友可以參考下
    2017-12-12
  • 使用react-activation實現keepAlive支持返回傳參

    使用react-activation實現keepAlive支持返回傳參

    本文主要介紹了使用react-activation實現keepAlive支持返回傳參,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • 詳解Immutable及 React 中實踐

    詳解Immutable及 React 中實踐

    Immutable 可以給 React 應用帶來數十倍的提升,也有人說 Immutable 的引入是近期 JavaScript 中偉大的發(fā)明,因為同期 React 太火,它的光芒被掩蓋了。這篇文章主要介紹了Immutable及 React 中的實踐,需要的朋友可以參考下
    2018-03-03
  • 在React中編寫class樣式的方法總結

    在React中編寫class樣式的方法總結

    在TypeScript (TSX) 中編寫 CSS 樣式類有幾種方法,包括使用純 CSS、CSS Modules、Styled Components 等,本文給大家介紹了幾種常見方法的示例,通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-07-07
  • react封裝Dialog彈框的方法

    react封裝Dialog彈框的方法

    這篇文章主要為大家詳細介紹了react封裝Dialog彈框的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React props和state屬性的具體使用方法

    React props和state屬性的具體使用方法

    本篇文章主要介紹了React props和state屬性的具體使用方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • React Native使用Modal自定義分享界面的示例代碼

    React Native使用Modal自定義分享界面的示例代碼

    本篇文章主要介紹了React Native使用Modal自定義分享界面的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 聊聊ant?design?charts?獲取后端接口數據展示問題

    聊聊ant?design?charts?獲取后端接口數據展示問題

    今天在做項目的時候遇到幾個讓我很頭疼的問題,一個是通過后端接口成功訪問并又返回數據,但拿不到數據值。其二是直接修改state中的data,console中數組發(fā)生變化但任然數據未顯示,這篇文章主要介紹了ant?design?charts?獲取后端接口數據展示,需要的朋友可以參考下
    2022-05-05
  • 優(yōu)雅的在React項目中使用Redux的方法

    優(yōu)雅的在React項目中使用Redux的方法

    這篇文章主要介紹了優(yōu)雅的在React項目中使用Redux的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論

年辖:市辖区| 汉中市| 子长县| 同心县| 如东县| 清新县| 台北县| 汶上县| 永州市| 和田市| 乡城县| 昭苏县| 贡嘎县| 乌拉特前旗| 望谟县| 巫山县| 东兰县| 巴楚县| 合江县| 广南县| 昭平县| 安平县| 昂仁县| 梅州市| 东海县| 普定县| 孙吴县| 安顺市| 虹口区| 东源县| 临汾市| 武穴市| 红河县| 东丽区| 南康市| 南部县| 车险| 双鸭山市| 奎屯市| 乌拉特中旗| 称多县|