React高階元件和render props的適用場景有區別嗎,還是更多的是個人偏好

時間 2021-05-12 00:35:40

1樓:

抽象來說,區別在於控制權。

render props 則是控制反轉再反轉,控制權在子元件,父元件可以傳一些「參考」給子元件,但最後渲染的結果還是完完全全由子元件控制的。

所以具體用哪個,看你想把控制權給誰了

2樓:

無論是render props 還是 HOC你都需要乙個enhance的函式來解決這層抽象,暫且不論enhance的實現。

比如有個場景,我們需要增強乙個Component的背景顏色// HOC

););// 使用 HOC

Component = enhanceHOC( => })// 使用 Render Props

Component = props => enhanceRenderProps({...props,

// HOC在閉包裡

// 我們寫HOC是這樣的

// 在renderProps裡是這樣的

所以就基本的概念來講。

引數多少和輸出都是一樣的。 乙個寫成高階函式,乙個是普通的函式而已。

所以結論只是注意一下 enhanceHOC和enhanceRenderProps的寫法而已。

3樓:林建入

render props 可以完成所有 HOC 能做的事情,反過來卻不成立。並且 render props 可以避免 HOC 裡常見的 導致的型別不明確(如果你使用 TypeScript/Flow 的話)

如果有疑問,參見 Michael Jackson 的演講:Never Write Another HoC

話雖如此,HoC 也並非絕不可用。偶爾用用是可以的。就我個人而言不喜歡使用。

4樓:

『H 和 I 的區別』

HOC 是對元件能力的補充,例如,可以把元件的顯示隱藏的邏輯抽象出來,或者對所有元件的某個字段進行統一的校驗等等。

render props 是有點類似於控制反轉(IoC)了,大家定義好介面,我給你資料,長什麼樣子,你自己看著辦吧。

react 元件數比較深的時候,子元件怎麼向父元件傳指

隋堤倦客 eventbus 當然寫的時候一時爽,之後就比較蛋疼 試試context,其實挺好用的 要是工程有很複雜的預期還是用redux吧,redux真的很清晰很好用,除了寫起來麻煩點 yoom 說個不同的方案吧,我更傾向於發布訂閱的方式,使用了Rxjs。這樣子就跟框架無關了,無論React或Vue...

React 有哪些優秀實用的元件?

秘雨軒 介紹下自己寫 React UWP吧,實現微軟 UWP Design 和 Fluent Design 的 React 開源UI庫。這是官方文件 UWP and Fluent Design UI Libray by React 長這樣的. ProfLiu github上面有乙個開源專案,羅列了很...

react中某個元件的狀態變了,但是內部的乙個子元件並沒有變化,那麼這個子元件會重新渲染嗎?

高山景行 乙個元件執行setState之後,從這個元件為根的元件樹會有乙個更新的過程,每個元件都會根據自己的shouldComponentUpdate的結果執行render方法,然後和上次render的結果比較,找到最小差集之後patch到真實dom上。所以,如果子元件的shouldComponen...