要使用react-redux
庫中的connect()
函數將React組件連接到Redux Store,請按照以下步驟操作:
導入connect
:首先,您需要從react-redux
導入connect
函數:
<code class="javascript">import { connect } from 'react-redux';</code>
定義mapStateToProps
和mapDispatchToProps
:這些功能是可選的,但通常使用。 mapStateToProps
採用商店的狀態,並為您的組件返回道具的對象。 mapDispatchToProps
採用dispatch
函數,並返回一個動作創建者dispatch
的對象。
<code class="javascript">const mapStateToProps = (state) => { return { // Example props todos: state.todos, }; }; const mapDispatchToProps = (dispatch) => { return { // Example action addTodo: (text) => dispatch(addTodo(text)), }; };</code>
使用connect
來包裝組件:使用connect
將組件包裝,將mapStateToProps
和mapDispatchToProps
作為其參數。這創建了連接到Redux Store的新組件。
<code class="javascript">const ConnectedComponent = connect( mapStateToProps, mapDispatchToProps )(YourComponent);</code>
導出連接的組件:最後,您可以導出此新的連接組件以在應用程序的其他部分中使用。
<code class="javascript">export default ConnectedComponent;</code>
通過遵循以下步驟,您的React組件將能夠從Redux Store接收數據並將操作分配給商店,從而使Redux應用程序中的單向數據流構成典型的單向數據流。
使用connect()
將React組件與Redux Store鏈接可提供幾個關鍵好處:
connect()
,您可以聲明地指定組件從商店中需要的數據,從而簡化了整個應用程序管理狀態的過程。connect()
在引擎蓋下實施了shouldComponentUpdate
,這可以通過防止狀態變化時不必要的重新訂閱來幫助優化應用程序的性能,但相關的道具卻沒有。connect()
簡化了狀態如何通過組件傳遞,減少道具鑽探並使管理複雜的狀態交互更容易。connect()
連接的組件更容易測試,因為您可以通過預定義的狀態和操作模擬Redux存儲並隔離組件。 mapStateToProps
和mapDispatchToProps
是connect()
功能中的關鍵功能,可用於特定目的:
MAPSTATETOPROPS :此功能將整個Redux Store狀態作為其第一個參數並返回對象。該對像中的鍵變成傳遞給組件的道具。本質上,它將Redux狀態的一部分映射到組件的道具,從而使您的組件可以訂閱狀態更改。例如:
<code class="javascript">const mapStateToProps = (state) => { return { todos: state.todos, }; };</code>
在此示例中,每當Redux Store中的狀態更改時, mapStateToProps
運行,如果todos
狀態已更改,它將將此新的todos
數據傳遞給連接的組件。
MapDisPatchToprops :此功能將dispatch
函數從Redux存儲中獲取作為參數,並以動作創建者為值返回對象。這些動作創建者在稱為Redux Store時,將動作調用。物體的鍵成為組件的道具。例如:
<code class="javascript">const mapDispatchToProps = (dispatch) => { return { addTodo: (text) => dispatch(addTodo(text)), }; };</code>
在這裡, addTodo
成為有關連接組件的道具,可以稱為this.props.addTodo(text)
組件中的組件,將addTodo
操作派遣到商店中。
將connect()
與redux一起以正面和負面方式影響反應應用的性能:
積極影響:
connect()
函數會自動實現shouldComponentUpdate
。這意味著僅當狀態的相關部分(由mapStateToProps
確定)實際上發生了變化時,連接的組件僅重新渲染,從而通過減少不必要的重新呈現來改善性能。connect()
Redux可以簡化通過應用程序的數據流,從而減少了深層通過組件樹的道具的需求,從而可能提高了組件渲染效率。潛在的負面影響:
mapStateToProps
功能得到了優化,並且不會無意間觸發重新租賃者會變得具有挑戰性,如果無法正確處理,則可能會影響性能。為了減輕這些影響,開發人員可以使用諸如mapStateToProps
reselect
回憶之類的技術,也可以考慮使用React.memo
進行連接的組件來進一步控制基於Prop更改的重新訂閱者。此外,仔細設計狀態結構和商店的使用可以幫助在較大的應用程序中有效地管理性能。
以上是如何使用Connect()將React組件連接到Redux Store?的詳細內容。更多資訊請關注PHP中文網其他相關文章!