有什麼是 HOC 適合做而 React Hooks 不適合的場景?

時間 2021-05-05 16:47:10

1樓:joe06102

其實有很多。我認為對於比較純粹的抽離邏輯和渲染的hoc/render-props,hooks是可以替代他們的,但是如果涉及到渲染,hooks其實沒啥辦法。

Hooks主要還是抽離和狀態相關的邏輯。

2樓:

之前 HOC 大量用於注入一些新的 props,這種情況更適合用 hooks。

如果有些 HOC 你不會改變 props,那麼很有可能它就不能用 hooks 做了。比如純檢視上的改變(顯示隱藏,或者在原元件基礎上新增邊框,header 等),還有控制重新整理(比如 React.memo 實際上也是個 HOC)等

3樓:張立理

對props的處理的HOC寫成Hooks都會有很詭異的感覺,比如最簡單的:

const ErrorLabel = withClass('error')('span');

請輸入使用者名稱

寫成Hooks的話……嗯沒得寫,寫完就是普通的元件

在React的元件裡,props是分為「生產」和「使用」兩個階段的,對props進行操作的HOC能夠完成「隱式地生產」這一目的,以至於消費方不需要主動地為此做一些什麼

而Hooks在生產和消費上都是需要使用者主動的,比如對useState的呼叫,以及將呼叫後的value放到某乙個元件上去。這致使在HOC對props處理的場景下,基於Hooks也就能用個useMemo

4樓:程墨Morgan

先說HoC做得到但Hooks做不到的。

如果擴充套件了React的生命週期,那就只有HoC才能做了,因為Hooks說到底還只是在React自帶的生命週期裡玩,多出來的生命週期,Hooks就沒辦法了。

next.js擴充套件了生命週期,增加getInitialProps函式,在沒有Suspense之前,這的確是乙個創舉,用於獲取非同步資料,雖然getInitialProps是乙個static函式,表面上看起來函式式元件也可以用,但是,如果你要提取一些可重用邏輯, 就非要HoC才行了。

const Page = () => (

hoc = (PageComponent) => ;

再說,有一些場合適合HoC而不適合Hooks。

Hooks至今(React v16.7.0-alpha.

0)依然缺乏一種完全替換shouldComponentUpdate的機制,也就是在開始渲染過程之後,元件根據state和props計算出乙個結果,告訴React「我挺好,不用重畫了」。

HoC很容易定製shouldComponentUpdate,但目前Hooks沒提供這種方法,React.memo只能做到根據props計算,用不到state。

不過,React官方已經意識到這個問題,有這個issue Provide more ways to bail out inside Hooks · Issue #14110 · facebook/react 在跟蹤這個問題。

FPGA適合做什麼

FPGA探索者 非主流演算法?1.通訊上整個物理層的實現,信源編譯碼 調製解調 通道編譯碼 同步 通道估計 通道均衡 2.影象處理,影象演算法加速,幾個G大小的影象處理 3.定製化IP設計 4.ASIC晶元原型驗證,在FPGA驗證好了再去流片 5.RISC V精簡指令作業系統 6.雷達訊號處理 8....

創業適合做什麼?

主治醫生 2018年夏天,我突然有了乙個辭職的想法。只要我醒著,我就不停的在想著這個想法。我急切的想要實現這個計畫,以至於我無法專注於做其他事情。那時,我已經是一家外企的中層管理,看不到發展的工作實在令我焦慮。偶然的一次機會,我和好友一起去武漢的曇華林閒逛,一下子就愛上這條街隨性,閒散,慢節奏的生活...

什麼樣的人適合做會計?什麼樣的人適合做運營?

財務小席 從你的描述中看出,你所說的能侃並不是你的交流能力你的應變能力很突出,建議你選擇會計,在把基礎業務搞明白的情況下去做一些交流溝通協調的工作,鍛鍊一下自己這方面的能力,你性格外向,又喜歡侃,在財務人員中這樣的性格也不多,以後把這種性格和財務專業技能做好結合,相信你也能有很好的發展。 重新看了你...