簡體   English   中英

我如何在 react redux 中訪問另一個 reducer 的狀態。 reducer 和 store 之間的狀態流

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM