繁体   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