React 高階組件

高階函數(shù)

  • 函數(shù)可以作為參數(shù)被傳遞
image
  • 函數(shù)可以作為返回值輸出
image

高階組件

  • 高階組件接受一個(gè)組件作為參數(shù),并返回一個(gè)新組件的函數(shù)
  • 高階組件是一個(gè)函數(shù),并不是組件,只是為了方便而這么稱呼

使用高階組件

  1. higherOrderComponent(WrappedComponent)

    image
  2. @higherOrderComponent 裝飾器

高階組件應(yīng)用

  • 代理方式

    返回的新組件直接繼承React.Component類,新組件扮演的角色是傳入組件的代理,在新組件的render函數(shù)中,將被包裹組件渲染出來,除了高階組件自己做的工作,其余功能全部轉(zhuǎn)手給了被包裹組件

  • 繼承方式

    采用繼承關(guān)聯(lián)作為參數(shù)的組件和返回的組件,假如傳入的組件參數(shù)是WrappedComponent,那么返回的組件就直接繼承自WrappedComponent,這樣就可以更改傳入組件的生命周期或是一些屬性和方法

代理方式高階組件
  • 操作props

    新增props

    新增屬性

    刪除屬性

    屬性刪除

  • 訪問ref

  • 抽取狀態(tài) 把input的狀態(tài)控制提取出來

    [圖片上傳失敗...(image-20394e-1560324084744)]

    受控組件 在傳入組件內(nèi)部的input直接展開{...this.newProps}

  • 包裝組件

繼承方式高階組件
image
  • 操縱props
  • 操作生命周期

盡量使用代理方式,這樣對(duì)原組件的侵入方式比較小,而繼承方式,很容易影響到傳入進(jìn)來的組件

高階組件名稱

image

高階組件的靜態(tài)屬性 displayName 就是組件名

?著作權(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)容

  • 在目前的前端社區(qū),『推崇組合,不推薦繼承(prefer composition than inheritance)...
    Wenliang閱讀 78,003評(píng)論 16 124
  • 前言 學(xué)習(xí)react已經(jīng)有一段時(shí)間了,期間在閱讀官方文檔的基礎(chǔ)上也看了不少文章,但感覺對(duì)很多東西的理解還是不夠深刻...
    Srtian閱讀 1,751評(píng)論 0 7
  • 高階組件是對(duì)既有組件進(jìn)行包裝,以增強(qiáng)既有組件的功能。其核心實(shí)現(xiàn)是一個(gè)無狀態(tài)組件(函數(shù)),接收另一個(gè)組件作為參數(shù),然...
    柏丘君閱讀 3,210評(píng)論 0 6
  • 在多個(gè)不同的組件中需要用到相同的功能,這個(gè)解決方法,通常有Mixin和高階組件。Mixin方法例如: 但是由于Mi...
    小魚小蝦小海洋閱讀 882評(píng)論 0 3
  • React進(jìn)階之高階組件 前言 本文代碼淺顯易懂,思想深入實(shí)用。此屬于react進(jìn)階用法,如果你還不了解react...
    流動(dòng)碼文閱讀 1,227評(píng)論 0 1

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