2016-06-12 68 views
2

對於如何從容器中獲取狀態,我有點困惑。我很好地將調度映射到道具&調度動作。如何從商店的容器中獲取狀態?

在文檔中聲明store.getState(),但是我首先需要mapStateToProps來調用this.props.getState(),或者我可以簡單地調用store.getState()在我的容器中的任何位置,將有權訪問通過我的提供商傳遞的商店?

回答

3

connect()函數的第一個參數是一個可選函數,名爲mapStateToProps。如果您提供了mapState參數,則每次更新商店時,由connect()生成的包裝組件將自動調用您的mapState函數,並傳入新狀態。然後您的mapState函數應該提取連接組件所需的任何數據片段,然後將其返回。 (mapStateToProps實際上僅僅是被稱爲「選擇器」功能的特定用法 - 有關使用選擇器的更多示例,請參閱http://redux.js.org/docs/recipes/ComputingDerivedData.html)。

您自己的組件代碼不應該直接訪問商店,而只需接受傳入的道具。請參閱http://redux.js.org/docs/FAQ.html#store-setup-multiple-stores

0

所以這是從我所瞭解的Redux流程。 你可以從你的容器中調用一個動作,說一個onClick方法,該方法反過來得到減少並返回狀態的副本。 這個狀態的副本可以在你的mapStateToProps函數中使用,它將你的道具對象設置爲新的狀態對象。 你的渲染函數將會利用這個新的更新道具對象,並且如果有任何狀態更新的話就會渲染。

希望這能解決您的查詢。

看看我的github回購,我已經做了一個簡單的課程應用程序添加/管理課程。 https://github.com/sidharthmehra/ReactReduxApp