react 的高階元件(基礎篇)

2022-07-27 17:00:18 字數 1488 閱讀 7749

乙個高階元件只是乙個包裝了另外乙個 react 元件的react 元件

這種形式通常實現為乙個函式,本質上是乙個類工廠(class factory),它下方的函式標籤偽**啟發自 haskell

hocfactory:: w: react.component => e: react.component
定義中的『包裝』一詞故意被定義的比較模糊,因為它可以指兩件事情:

我們將討論這兩種形式的更多細節。

概括的講,高階元件允許你做:

在**這些東西的細節之前,我們先學習如何實現乙個高階元件,因為實現方式『允許/限制』你可以通過高階元件做哪些事情。

import react from 'react'

// before元件

export default class before extends react.component

render()

}

import react from 'react'

// after 元件

export default class after extends react.component

render()

}

import react from 'react'

import hoc from './hoc'

// componentobj元件

class componentobj extends react.component

render()

}export default hoc(componentobj) // 引用高階元件

import react from 'react'

import before from './before'

import after from './after'

// 建立乙個高階元件hoc 引數是另乙個元件物件

export default function hoc (componentobj)

} // 元件渲染之前

componentwillmount()

// 元件渲染之後

componentdidmount()

render()

// 高階元件的封裝與覆蓋

return (

)} }

// 設定元件的顯示名稱

hoc.displayname = `pro_($)`;

return hoc;

}

頁面展示效果:

我是before元件

hello 張三

我是commenthtml元件

我是after元件

react篇之高階元件 HOC

高階元件 簡單來說,高階元件可以看做乙個函式,且該函式接受乙個元件作為引數,並返回乙個新的元件。我在之前的部落格 閉包和類 中提到乙個觀點,物件導向的好處就在於,易於理解,方便維護和復用。其實高階元件,也是為了更好地復用之前的元件。它可以理解為,基礎元件通過包裹處理,生成乙個適應某些場景的元件。它可...

React高階元件

想想以前用原生和jquery的專案,上千行的code映入眼簾,瞬間有種昏死過去的衝動。難以維護,改乙個bug可能出現n個bug,真的是很痛苦。於是乎元件化成為了當前前端開發的主流技術。angular vue和react很好的幫我們實現了元件化。但是我們常常也會遇到一種情況,就是兩個元件往往有很多的重...

react高階元件

基本概念 函式可以作為引數被傳遞 函式可以作為返回值輸出 元件作為引數被傳遞,返回值是乙個元件 高階元件是乙個函式 案例 將a元件作為公共元件,bc元件作為a函式的引數,來共享顯示a元件 此處紅框是a元件,紅框裡左邊內容為b元件,右邊內容為c元件 1.建立公共的a元件 將元件a封裝成乙個函式,接收乙...