Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在react redux中访问一个还原器在另一个还原器中的状态。减速器和存储器之间的状态流_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 如何在react redux中访问一个还原器在另一个还原器中的状态。减速器和存储器之间的状态流

Javascript 如何在react redux中访问一个还原器在另一个还原器中的状态。减速器和存储器之间的状态流,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我是react redux的绝对初学者,我看了很多视频、文章和文档,无法理解reducer之间以及store-to-reducer之间的状态是如何流动的 我对每个减速器都有这样的状态 const initState={todos:[]} contreducer=(state=initState,action)… 异径管2具有相似的不同状态 initState2={todo:} reducer2=(state=initState2,action). 然后我导入并合并减速器。这里我使用两种不同的还原

我是react redux的绝对初学者,我看了很多视频、文章和文档,无法理解reducer之间以及store-to-reducer之间的状态是如何流动的

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

const initState={todos:[]}

contreducer=(state=initState,action)…

异径管2具有相似的不同状态

initState2={todo:}

reducer2=(state=initState2,action).

然后我导入并合并减速器。这里我使用两种不同的还原剂,它们有不同的状态,这是正确的方法吗?如果是这样的话,如果每个reducer都有自己的单独状态,那么如何将redux称为单状态呢


我们的存储中不是只有一个状态,所有还原程序都可以访问它,并直接调度操作来更改存储的状态,而不是更改还原程序的存储。感谢任何帮助,这可能看起来是一个愚蠢的问题,但填补空白确实很重要,许多初学者和我一样有疑问,请提供帮助。谢谢你

你只需要一个减速机就可以储存你的待办事项

如果每个reducer都有自己的redux,那么如何将redux称为单状态 个别国家

应用程序实际上只有一个全局存储,其中存储了所有应用程序状态。减速机返回的内容实际上是存储在存储中的内容。
存储内容的配置是一个映射(键值),其中键在根reducer中定义,值是reducer函数返回的值

你必须这样看待它,视图是“愚蠢的”,因为它所做的唯一事情就是通过发送一个动作告诉应用程序它想要什么。此操作只是一个事件,它用您提供的字符串标记,以清楚地标识视图想要的内容。reducer截获此操作并相应地更新存储中的状态。应用程序中的所有组件都可以访问此状态。因此,它显然是全球性的

在您的示例中,视图只会告诉应用程序例如:“添加todo”。reducer将截获此消息并返回一个带有添加todo的数组。返回的数组将保存在存储中

如果你想要一个单独的“待办事项”,这可能指的是当前的“活动”待办事项。这样标记会使目的更具表现力。
这是单一状态,因为您的根减速机将以如下方式结束:

{
    "activeTodo": activeTodoReducer
    "todos": todosReducer
}
您可以在整个应用程序中访问组件中的这些键/值

如果每个reducer都有自己的状态,那么如何将redux称为单状态

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

要创建存储,请执行以下操作:

const store = createStore(myBeautifulReducers)
在您的情况下,MyBeautifulReducer将是:

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

MyBeautifulReducer将是一个对象,它同时包含reducer(reducer和reducer2)和您在其中编写的逻辑(switch语句等)。

非常感谢。我现在开始理解redux了。所以每个减速机将保持一个状态,如果我想在减速机2中使用减速机1保持的状态,该怎么办?我如何访问?@哼哼我需要看看你打算做什么,但有多种方法可以解决这个问题。您可以问自己的问题是:视图能否将该状态(从reducer 1返回)作为有效负载发送到reducer 2?建议:不要在商店中复制状态,因为你需要保持它们的同步。当一个状态依赖于另一个状态时,您还可以使用诸如redux observable之类的中间件,它允许您拦截一个动作,并从那里发送一个或多个新动作(我认为redux thunk实现了同样的效果)。当新问题出现时,请随意探索和发布。我认为,我打算做的事情可以通过redux thunk实现。谢谢你的帮助,你让我开心。