react高階元件筆記

2021-10-09 17:53:07 字數 2886 閱讀 2652

import react from

'react'

import proptypes from

'prop-types'

// 匯入資源

// import img from '@/logo192.png'

// 建立mouse元件

class

mouse

extends

react.component

handlemousemove

= e =>)}

// 監聽滑鼠移動事件

componentdidmount()

// 元件消失時解除安裝滑鼠移入事件

componentwillunmount()

render()

, y:

//

// )

// return this.props.render(this.state) // 把state暴露出去

return

this

.props.

children

(this

.state)

// 把state暴露出去}}

// 新增props校驗

mouse.proptypes =

export

default

class

heightjie

extends

react.component

render()

, y:

)}}> */

}, y:

<

/p>)}

}) => x: , y:

} */

}<

/mouseposition>

<

/mousecat>

<

/div>)}

}// --------二、高階元件----------

// 使用步驟

// 1.建立乙個函式,名稱約定以with開頭

// 2.指定函式引數,引數應該以大寫字母開頭(作為要渲染的元件)

// 3.在函式內部建立乙個類元件,提供復用的狀態邏輯**,並返回

// 4.在該元件中,渲染引數元件,同時將狀態通過prop傳遞給引數元件

// 建立高階元件,以with開頭

function

withmouse

handlemousemove

= e =>)}

componentdidmount()

// 元件消失時解除安裝滑鼠移入事件

componentwillunmount()

render()

>

<

<

/div>)}

}// ---------------------設定displayname----------------

// 高階元件名字要大寫

mouse.displayname =

`withmouse$`

return mouse

}function

getdisplayname

// 用來測試高階元件

const

position

= props =>

(x高階座標為:

, y高階座標為:

<

/p>

)const

cat= props =>

("./logo192.png" alt=

"貓" style=

}>

<

/img>

)// 呼叫高階元件

// 獲取增強後的元件:

const mouseposition =

withmouse

(position)

const mousecat =

withmouse

(cat)

// -----------------------高階元件-優化---------------

// 由於以上高階元件被呼叫了兩次,所有有兩個相同的元件名(高階元件裡面的mouse元件)

// 設定displayname

// 1.使用高階元件存在的問題:得到的兩個元件名稱相同

// 2.原因:預設情況下,react使用元件名稱作為displayname

// 3.解決方式:為高階元件設定displayname便於除錯時區分不同的元件

// 4.displayname的作用:用於設定除錯資訊

// ----------------------呼叫高階元件時要接收props往下傳遞props-------------

// 1.問題: props丟失

// 2.原因: 高階元件沒有往下傳遞props

// 4.傳遞方式:

// // // 傳遞了乙個引數a=1

// 傳遞到高階元件裡面去了

// // 該元件提供復用的狀態邏輯

// class mouse extends react.component

// handlemousemove = e => )

// }

// componentdidmount()

// // 元件消失時解除安裝滑鼠移入事件

// componentwillunmount()

// render()

// }

// // ---------------------設定displayname----------------

// // 高階元件名字要大寫

// return mouse

// }

React高階元件

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

react高階元件

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

React 高階元件

高階元件 high order component,hoc 輸入 react 元件 輸出 react 元件 高階元件的作用主要是用來加強元件,通過把基礎元件拆分成很小的粒度,通過高階元件進行增強並返回,以此提高復用性。比如需要開發乙個訊息框,一開始只需要乙個模態框能夠顯示訊息就可以。後來需要多增加 ...