我如何在React Redux中访问另一个Reducer的状态。减速器和存储之间的状态流

时间:2020-02-15 11:10:08

标签: javascript reactjs redux react-redux

我绝对是React-redux的初学者,我看了很多视频和文章,文档,却不明白状态如何在减速器之间以及存储到减速器之间流动。

我对每个减速器都有这样的状态

const initState = {todos:[]}

cont reducer =(state = initState,action)....

不同状态的异径管2

initState2 = {todo:“”}

reducer2 =(state = initState2,action)...

然后我导入并合并化简器。在这里,我使用的是状态不同的两个不同的reducer,这是正确的处理方式吗?如果是这样,如果每个化简器都有其自己的单独状态,那么如何将redux称为单一状态。

我们在存储中没有一个状态,所有还原器都可以访问该状态,并且调度操作直接更改存储状态,而不是更改还原器的存储。感谢您的帮助,这似乎是一个愚蠢的问题,但填补空白确实很重要,许多初学者与我有同样的疑问,请提供帮助。谢谢

2 个答案:

答案 0 :(得分:1)

您只需要1个reducer即可存储待办事项。

如果每个reducer都有自己的redux,如何将其称为单一状态 个别状态。

该应用程序实际上只有一个全局存储,其中存储了所有应用程序状态。 reducer返回的是有效存储在商店中的内容。
存储的配置是一个映射(键-值),其中在根化简中定义了键,而值是从化简函数返回的值。

您必须查看的方式是视图为“哑”,因为它唯一要做的就是通过分派操作来告知应用程序所需的内容。这个动作只是一个事件,它标有一些字符串,您可以给它提供一个字符串,以清楚地标识视图所需的内容。减速器拦截此操作并相应地更新存储中的状态。反过来,您的应用程序中的所有组件都可以访问此状态。因此,这显然是全球性的。

在您的示例中,视图仅告诉应用程序:“添加待办事项”。减速器将拦截此消息,并返回具有添加的待办事项的数组。返回的数组将保存在商店中。

如果您想要单独的“待办事项”,则可能会引用当前的“活动”来执行。如此标记将使目的更具表现力。
这是单一状态,因为您的根减速器将以类似以下内容结束:

{
    "activeTodo": activeTodoReducer
    "todos": todosReducer
}

您可以在整个应用程序的组件中访问这些键/值。

答案 1 :(得分:1)

如果每个化简器都有其自己的独立状态,那么如何将redux称为单一状态。

因为状态未保存在减速器中。状态仅保存在存储中,并且只有一个存储。这就是为什么称为单一状态。

要创建商店,请执行以下操作:

const store = createStore(myBeautifulReducers)

在您的情况下,myBeautifulReducers将是:

const myBeautifulReducers = combineReducers({reducer, reducer2});

myBeautifulReducers将是一个既包含reducer(reducer和reducer2)又包含您在其中的每个逻辑(switch语句等)的对象。