您好,登錄后才能下訂單哦!
小編給大家分享一下react高階組件的作用是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
react高階組件深入理解、作用以及應(yīng)用
本文主要以通俗易懂的語言表達(dá)自己對高階組件的一些見解,希望大家多多提問
高階組件就是一個函數(shù),傳給它一個組件,它返回一個新的組件。新的組件使用傳入的組件作為子組件。
首先根據(jù)定義我們明白它就是一個函數(shù),而且它必須有返回值,返回值是一個組件,當(dāng)然這里我們高階組件可以嵌套(這里是一篇入門的文章,之后我會更新高階組件多層嵌套)
一直以來我們都是看到新的知識都是一直學(xué)習(xí),一直看官方文檔,沒有靜下心來想一想到底為什么這個新知識能夠在這個時候出現(xiàn)?為什么它剛出現(xiàn)就這么火?它到底在什么情況下用?它能解決什么問題……等等這一系列的問題
我第一次見到這個詞是在redux中解讀connect組件時,看到這個詞,官方文檔也有具體說明個人推薦到這里去看,比官方文檔,解釋的更好
其實(shí)高階組件就是把公用的一些部分提出來,把修改的部分以參數(shù)的形勢傳進(jìn)去,在這里可能有人會說這那需用什么高階組件,我自己封裝一個組件也可以達(dá)到同樣的效果,簡單的組件在這里你可能通過封裝來實(shí)現(xiàn),但是我舉兩個例子大家在想一下怎么通過組建封裝來實(shí)現(xiàn):1、antd組件的form組件,2、我們在redux中組件頂部寫一行代碼@connect之后就可以在組件中通過this.props訪問store中的數(shù)據(jù)和一些修改數(shù)據(jù)的方法
這里也許也會有一些大牛說我可以實(shí)現(xiàn),但是大牛畢竟比較少,可能許多程序員在心理都會覺得自己是大牛,在這里我可以告大家一個檢測自己實(shí)力的方法:就是沒事的時候把建立投一下阿里或者是京東,然后去面試一下,我敢保證許多人就會現(xiàn)行;
說了那么多廢話,說點(diǎn)有用的吧,高階組件一般用在那些地方呢
我們從一個實(shí)際問題來理解并學(xué)習(xí)高階組件:有類似的幾個組件但是組件內(nèi)部只有少部分是不同的,它們身上都還有一些公用的方法,并且這些少部分組件組件都還要調(diào)用大組件的方法或者訪問它的一些數(shù)據(jù)
我們來分一下:1,這幾個組件的大部分樣式和功能是相同的,我們可以可以思考能不能只寫一次;2、它們不同的地方還會觸發(fā)一些相同的方法;3、不同的地方只是內(nèi)部的一小部分
如果我們按照組件封裝的方法來實(shí)現(xiàn)的的話,我們封裝一個大組件,然后把不同的小組件傳進(jìn)去,然后通過props把方法傳到小組件,通過回調(diào)觸發(fā),但是這里有一個問題,我們寫這幾個組件的時候每次都要把大組件寫一遍然后把子組件嵌入進(jìn)去
加入這里我們采用高階組件來實(shí)現(xiàn)的話,我們只需要把公用的方法和數(shù)據(jù)寫到高階函數(shù)返回的組件中,然后把組件傳進(jìn)去就可以了,最后在每個調(diào)用這個大組件的地方直接調(diào)用這個函數(shù)就可以了。
在上圖中我們的代碼可以這樣來實(shí)現(xiàn)
//先寫高階組件 export default class HigherOrderComponent(InputComponent){ return class NewComponent extends Component{ constructor(){ super() this.state={ initalState:123 } } commonFunc=()=>{ } render(){ return( <InputComponent data={this.state.initialSate} fun={this.commonFnn}/> ) } } } //再來寫outerComponent import HigherOrderComponent from 'HigherOrderComponent'; import MinComponent1 from 'MinComponent1'; import MinComponent2 from 'MinComponent2'; class OuterComponent extends Component{ render(){ return( <p> {HigherOrderComponent(minComponent1)} {HigherOrderComponent(minComponent2)} </p> ) } } 這樣這個outerComponent就寫完了,直接在這個編輯器里寫的,代碼可能會有以下小的錯誤,大家諒解
以上是react高階組件的作用是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。