3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
Redux的connect就是高階組件,只不過它的傳參只能是它規(guī)定的數(shù)據(jù)格式而已。像你圖中的這個(gè)例子,用Redux的connect應(yīng)該是實(shí)現(xiàn)不了的。兩者其實(shí)是一個(gè)概念,connect是為Redux設(shè)計(jì)的高級(jí)組件,你也可以為你的使用場景設(shè)計(jì)合適的高階組件。

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
我想你可以先理解這兩種技術(shù)的使用情境與目的,這會(huì)比較清楚。
高階組件(HOC)只是一種樣式,主要的目的是要讓原本的組件擴(kuò)充出其它功能,例如添加生命周期的一些代碼等等。當(dāng)然我說的比較簡單,還有其它的目的例如組件的重覆利用等等。
Redux本身就有使用高階組件(HOC)的樣式,可以看到的是用在react-redux這個(gè)綁定器中,connect方法在這里面提供。但Redux的目的是管控整個(gè)應(yīng)用中的狀態(tài),與高階組件的目的不同,兩者無法混為一談。
如果你的目的只是要擴(kuò)充組件,那就使用HOC樣式是直覺的,但HOC是有細(xì)部的問題的,目前已知道的經(jīng)過HOC的組件,原本組件中的靜態(tài)方法會(huì)消失。這是其中一個(gè)解決方式:?hoist-non-react-statics
如果你的目的是要管控整個(gè)應(yīng)用領(lǐng)域的狀態(tài),就用Redux之類的Flux框架,HOC只是Redux使用的其中一個(gè)樣式,它還有一些其它的樣式,各自有不同的目題。
添加回答
舉報(bào)