乙個高階元件只是乙個包裝了另外乙個 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封裝成乙個函式,接收乙...