找出什麼是高階組件以及在編寫React應用程序時它們如何有用
您可能熟悉JavaScript中的高階函數。這些是接受函數作為參數和/或返回函數的函數。
這些功能的兩個示例是Array.map()
或者Array.filter()
。
在React中,我們將此概念擴展到組件,因此我們有一個高階成分(HOC)當組件接受一個組件作為輸入並返回一個組件作為其輸出時。
通常,高階組件使您可以創建可組合和可重用的代碼,並且還可以封裝更多的代碼。
我們可以使用HOC將方法或屬性添加到組件的狀態,或者Redux例如存儲。
當您要增強現有組件,對狀態或道具或其渲染標記進行操作時,可能需要使用高階組件。
約定在“高階組件”之前添加一個with
字符串(這是一個約定,因此不是強制性的),因此如果您有一個Button
組件,其HOC對應項應稱為withButton
。
讓我們創建一個。
HOC最簡單的示例是返回未更改的組件的示例:
const withElement = Element => () => <Element />
讓我們使它更加有用,並為該元素添加一個屬性,除了它已經附帶的所有道具之外,還包括顏色:
const withColor = Element => props => <Element {...props} color="red" />
我們在組件JSX中使用此HOC:
const Button = () => {
return <button>test</button>
}
const ColoredButton = withColor(Button)
最後,我們可以在應用程序JSX中呈現WrappedButton組件:
function App() {
return (
<div className="App">
<h1>Hello</h1>
<ColoredButton />
</div>
)
}
這是一個非常簡單的示例,但是希望您可以在將這些概念應用於更複雜的場景之前了解HOC的要點。
免費下載我的反應手冊
更多反應教程:
- 一個React簡單的應用示例:通過API獲取GitHub用戶信息
- 用React構建一個簡單的計數器
- 用於React開發的VS Code設置
- 如何通過React Router將道具傳遞給子組件
- 使用Electron和React創建一個應用
- 教程:使用React創建電子表格
- 學習React的路線圖
- 了解如何使用Redux
- JSX入門
- 樣式化的組件
- Redux Saga簡介
- React Router簡介
- React簡介
- 反應組件
- 虛擬DOM
- 反應事件
- 反應狀態
- 反應道具
- 反應片段
- React Context API
- 反應PropTypes
- 反應概念:聲明式
- React:如何在點擊時顯示其他組件
- 如何在React JSX內部循環
- 道具與狀態在React中
- 您應該使用jQuery還是React?
- 使用React需要知道多少JavaScript?
- 蓋茨比介紹
- 如何在React中引用DOM元素
- React中的單向數據流
- 反應高階組件
- 反應生命週期事件
- 反應概念:不變性
- 反應概念:純度
- React鉤子簡介
- create-react-app簡介
- 反應概念:組成
- React:演示組件與容器組件
- React中的代碼拆分
- 使用React進行服務器端渲染
- 如何安裝React
- React中的CSS
- 在React中使用SASS
- 在React中處理表單
- 反應嚴格模式
- 反應門戶
- 反應渲染道具
- 測試React組件
- 如何在React中將參數傳遞給事件處理程序
- 如何處理React中的錯誤
- 如何在JSX中返回多個元素
- React中的條件渲染
- 反應,如何將道具轉移到子組件
- 如何在React中獲取輸入元素的值
- 如何使用useState React鉤子
- 如何使用useCallback React鉤子
- 如何使用useEffect React鉤子
- 如何使用useMemo React鉤子
- 如何使用useRef React鉤子
- 如何使用useContext React鉤子
- 如何使用useReducer React鉤子
- 如何將您的React應用程序連接到相同來源的後端
- 到達路由器教程
- 如何使用React Developer Tools
- 如何學習React
- 如何調試React應用程序
- 如何在React中呈現HTML
- 如何修復`dangerouslySetInnerHTML`與React中的錯誤不匹配
- 我如何解決React登錄表單狀態和瀏覽器自動填充的問題
- 如何在本地主機上的React應用程序中配置HTTPS
- 如何修復React中的“在渲染其他組件時無法更新組件”錯誤
- 我可以在條件內使用React掛鉤嗎?
- 將useState與對像一起使用:如何更新
- 如何使用React和Tailwind在代碼塊中移動
- React,添加到DOM時將焦點放在React中的一個項目上
- 反應,在doubleclick上編輯文本