```
目的:實現狀態邏輯復用
採用:包裝(裝飾)模式,比如說:手機殼
手機:獲取保護能力
手機殼:提供保護能力
高階元件:就相當於手機殼,通過包裝元件,增強元件功能
``````
高階元件:(hoc,higher-order component) 是乙個函式,接收要包裝的元件,返回增強後的元件
1.建立乙個函式,名稱約定以with 開頭
2.指定函式引數,引數應該以大寫字母開頭(作為要渲染的元件)
3.在函式內部建立乙個類元件,提供復用的狀態邏輯**,並返回
4.在該元件中,渲染引數元件,同時將狀態通過prop傳遞給引數元件
5.呼叫高階元件,傳入要增強的元件,通過返回值拿到增強後的元件,並將其渲染到頁面中
import proptypes from 'prop-types'
import img from './images/33.jpeg'
}
//監聽滑鼠移動事件
componentdidmount()
//推薦在元件解除安裝時移除事件繫結
componentwillunmount()
render()
return mouse
//用來測試高階元件
const position = props =>(
滑鼠當前位置:(x:,y: )
)//貓抓老師的元件
const cat = props =>(
)//獲取增強後的元件
const mouseposition = withmouse(position)
const mousecat = withmouse(cat))}
使用高階元件存在的問題:得到兩個元件名稱相同
原因:預設情況下,react 使用元件名稱作為displayname
解決方法:為高階元件 設定 displayname 便於除錯時區分不同的元件
作用:用於設定除錯資訊(react developer tools資訊)
return mouse
React元件通訊 高階元件
子父元件通訊 非父子元件通訊 跨元件通訊 在react沒有類似vue中的事件匯流排來解決這個問題,我們只能借助它們共同的父級元件來實現,將非父子關係裝換成多維度的父子關係。react提供了contextapi來實現跨元件通訊,react 16.3之後的contextapi較之前的好用。使用流程 im...
高階元件 高階函式 一
antd裡面的form表單方面,遇到乙個高階函式,以及高階元件,於是看了一下這方面內容,前輩們的文章寫得也非常詳細,這裡就稍微kobe一下 高階函式與高階元件 高階函式 高階函式,是一種特別的函式,接受的引數為函式,返回值也是函式 成立條件,二者兼一即可 1 一類特別的函式 a 接受函式型別的引數 ...
React高階元件
想想以前用原生和jquery的專案,上千行的code映入眼簾,瞬間有種昏死過去的衝動。難以維護,改乙個bug可能出現n個bug,真的是很痛苦。於是乎元件化成為了當前前端開發的主流技術。angular vue和react很好的幫我們實現了元件化。但是我們常常也會遇到一種情況,就是兩個元件往往有很多的重...