[英]How do i access state of one reducer in other in react redux. State flow between reducers and store
我是 react-redux 的絕對初學者,我觀看了許多視頻和文章、文檔,但無法理解狀態如何在減速器之間以及存儲與減速器之間流動。
我對每個減速器都有這樣的狀態
const initState = {todos:[]}
cont reducer = (state=initState,action) ....
Reducer 2 同樣具有不同的狀態
initState2 = {待辦事項:" "}
reducer2 = (state=initState2,action) ...
然后我導入並組合減速器。 在這里,我使用了兩種不同的減速器,它們具有不同的狀態,這是正確的做事方式嗎? 如果是這樣,如果每個減速器都有自己的狀態,那么如何將 redux 稱為單狀態。
難道我們在 store 中沒有一個狀態,所有的 reducer 和 dispatch action 都可以訪問它來直接改變 store 的狀態,而不是改變 reducer 的 store。 感謝任何幫助,這似乎是一個愚蠢的問題,但填補空白非常重要,許多初學者和我有同樣的疑問,請提供幫助。 謝謝
您只需要 1 個減速器來存儲您的待辦事項。
如果每個減速器都有自己的狀態,那么如何將 redux 稱為單狀態。
該應用程序實際上只有 1 個全局存儲,用於存儲所有應用程序狀態。 reducer 返回的是有效存儲在 store 中的內容。
存儲的配置是一個映射(鍵值),其中鍵在根減速器中定義,值是從減速器函數返回的。
你必須看待它的方式是視圖是“愚蠢的”,因為它唯一做的就是通過調度一個動作來告訴應用程序它想要什么。 這個動作只是一個用你給它的一些字符串標記的事件,以清楚地識別視圖想要什么。 reducer 攔截這個動作並相應地更新 store 中的狀態。 反過來,您的應用程序中的所有組件都可以訪問此狀態。 所以它顯然是全球性的。
在您的示例中,視圖只會告訴應用程序,例如:“添加待辦事項”。 reducer 將攔截此消息並返回一個包含添加的待辦事項的數組。 這個返回的數組將保存在商店中。
如果您想要一個單獨的“待辦事項”,這可能是指當前“活動”要做的事情。 將其標記為這樣將使目的更具表現力。
這是單一狀態,因為您的 root reducer 最終會得到如下結果:
{
"activeTodo": activeTodoReducer
"todos": todosReducer
}
您可以在整個應用程序的組件中訪問這些鍵/值。
如果每個減速器都有自己的狀態,那么如何將 redux 稱為單狀態。
因為狀態沒有保存在減速器中。 狀態只保存在 store 中,並且只有一個 store。 這就是為什么稱為單一狀態。
創建商店:
const store = createStore(myBeautifulReducers)
在您的情況下, myBeautifulReducers 將是:
const myBeautifulReducers = combineReducers({reducer, reducer2});
myBeautifulReducers 將是一個包含 reducer(reducer 和 reducer2)和您在每個 reducer 中編寫的邏輯(switch 語句等)的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.