React 7 React高階元件

2021-08-09 07:22:45 字數 2617 閱讀 4863

⓵ 高階元件的概念及應用

⓶ 以陣列為子元件的模式

乙個高階元件就是乙個函式,這個函式接受乙個元件作為輸入, 然後返回乙個新的元件作為結果, 而且,返回的新元件擁有了陣列元件所不具有的功能

定義高階元件的意義:

重用**。 把公用邏輯提取出來,利用高階元件的方式應用出去

修改現有 react 元件的行為。

告誡元件的實現方式:

**方式的高階元件

繼承方式的高階元件

應用場景:

1. 操縱prop;

2. 訪問ref;

3. 抽取狀態;

4. 包裝元件。

1. 操縱prop

/**

* @author zula

* @datetime 2017-10-13

* @param newprops [需新增的props]

* @return [高階元件]

*/ return

class

extends

react.component

}}

2. 訪問ref

已經好久沒用了。。。不想研究。。pass

3. 抽取狀態

react-redux 的 connect 函式執行的結果就是高階元件

4. 包裝元件

以上幾種使用場景都是改變props, 此方式是改變 render 函式。

下述案例是 改變樣式。 還可以組合多個 react 元件。

return

class

extends

react.component >

div> )}

}}繼承方式的高階元件採用繼承關係關聯作為引數的元件和返回的元件。

return

class

extends

render() ;

return

super.render();

}}}

1. 操縱props

上述 demo 直接操縱 props 並不安全,可以利用 react.cloneelement 讓元件重繪。

return

class

extends

render() ? 'red' : 'green'

}const _newprops = ;

return react.cloneelement(elements, _newprops, lements.props.children);

}}}

2. 操縱生命週期函式

因為繼承方式的高階函式返回的新元件繼承了引數元件,所以可以重新定義任何乙個 react 元件的生命週期函式 。這是繼承方式高階函式特用的場景,**方式無法修改傳入元件的生命週期函式,所以不具備這個功能 。

return

class

newcomponent

extends

render() else }}

}

用於除錯 debug 和日誌清楚看到元件名。

connect(democomponent)

使用場景沒啥約束,更為靈活。

const loggedinuser = 'mock user';

class

adduserprop

extends

react.component

}//使用

}

倒計時功能可以應用到很多場合中,基礎就是簡單的數字變化, 但是應用場景不同,其樣式也不同,這個時候可以把基礎功能提取出來。

//countdown 核心**

class

countdown

extends

react.component ;

}/**

* [當countdown元件裝載完成時,通過setinterval函式啟動每秒鐘更新內部狀態的操作]

* @author zula

* @datetime 2017-10-13

* @return [description]

*/componentdidmount() );

} else

}, 1000)

}/**

* [當元件銷毀時,銷毀定時器]

* @author zula

* @datetime 2017-10-13

* @return [description]

*/componentwillunmount()

}render()

}//使用

10}>

}10}>

}

成員變數和元件狀態都是特定與某個元件例項的資料, 但是元件狀態的改變可以引發元件的更新過程,而普通的成員變數則不會。

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 元件 高階元件的作用主要是用來加強元件,通過把基礎元件拆分成很小的粒度,通過高階元件進行增強並返回,以此提高復用性。比如需要開發乙個訊息框,一開始只需要乙個模態框能夠顯示訊息就可以。後來需要多增加 ...