我可以知道是否可以使用HOC而不是extend來更改shouldcomponentupdate的子組件的行爲(覆蓋)?這方面的任何例子?覆蓋shouldcomponentupdate與HOC
回答
是的。這可能在一定程度上。
我們可以實現HoC的shouldComponentUpdate
,它將具有與通常在React Child組件中重寫子組件的shouldComponentUpdate
相同的效果,如果父級重新渲染,則只會重新渲染。
function HoC(WrappedComponent) {
return class extends React.Component {
shouldComponentUpdate() {
// change the behaviour here
}
render() {
return <WrappedComponent {...this.props} />;
}
};
}
然而,這不會如果孩子組件有任何內部狀態改變與setState
或工作,它是不是從父更新等不同的源forced to rerender。例如,如果子組件連接到Redux商店,並且該商店有connect
,則它將在商店獲取更新時重新提交,而不管HoC中的重寫shouldComponentUpdate
行爲。
如果孩子還有shouldComponentUpdate(..),在HOC.shouldComponentUpdate被執行後,child.shouldComponentUpdate(..)仍然被執行。我想阻止孩子執行它 – cometta
如果您在HoC.scu中返回false,它將不會執行Child.scu。在這種方法中,這是防止執行Child.scu的唯一方法。 –
假設Hoc.scu返回true,那麼它會執行child.scu來查明它是否需要渲染孩子?我想跳過對child.scu的檢查,因爲child.scu的條件總是返回false,我希望HOC迫使孩子總是呈現 – cometta
- 1. 覆蓋與覆蓋
- 2. Reactjs shouldComponentUpdate與函數
- 3. 覆蓋與CSS
- 4. 與覆蓋
- 5. 覆蓋覆蓋?
- 6. 覆蓋scatterpoints與GGPLOT2
- 7. 分叉與覆蓋
- 8. Modal與覆蓋錨
- 9. gumroad覆蓋與turbolinks
- 10. 覆蓋層與jQuery
- 11. 如何覆蓋與
- 12. C++覆蓋...覆蓋?
- 13. 覆蓋或覆蓋
- 14. 覆蓋光標與CSS
- 15. 覆蓋與包裝食譜
- 16. 代碼覆蓋率與SCCT
- 17. T4MVC與我的覆蓋率
- 18. 無覆蓋報告與JSCover
- 19. 集成Bullseye覆蓋與Xcode
- 20. Float覆蓋了與CSS
- 21. 覆蓋CSS與下拉
- 22. 覆蓋與lambda語法
- 23. 覆蓋圖像與文字
- 24. emacs覆蓋與回車
- 25. 覆蓋tabbar與視圖
- 26. 如何覆蓋與註解
- 27. 覆蓋數據與貓鼬
- 28. 谷歌地圖與覆蓋
- 29. Knitr&Beamer與覆蓋圖
- 30. PowerMockito與Jacoco代碼覆蓋
在HOC文檔? https://facebook.github.io/react/docs/higher-order-components.html哪一個說明這很糟糕,mmkay? –
你可以擴展你爲什麼要這樣做嗎?正如另一位評論者指出,對包裝組件進行變異是一個壞主意,但是如果你想爲包裝組件定義一個更嚴格的'shouldComponentUpdate',那麼在HOC中定義它將會起作用。 – Jack