我感兴趣的是,当与Redux结合使用时,ReactJS组件如何相互交互?
根据我在todoApp tutorial中看到的内容,我创建了一个图表我理解交互(这可能完全不正确,这就是为什么我问这个问题):
在此图表中,您可以看到五个基本实体:Provider
,Store
,Container
,MainComponent
和Component
。
为简单起见,让我们调用所有这个系统一个应用程序,实际上,它由一个复合组件MainComponent
及其子组成。
Provider
是一个组件,封装了Store
和Container
个实例。
Container
是MainComponent
的增强版,由Redux'提供支持。 dispatch()
函数,包含来自currentState
实例的Store
的已定义(已过滤)数据。
Store
只是currentState
的持有者,实际应用程序'状态。
MainComponent
是应用程序的核心组件,由Component
个实例(可选)组成。
现在,此图中有四个Redux函数,即connect
,selector
,reducer
和dispatch
。
selector
会过滤state
,提供MainComponent
所需的数据并丢弃其他所有数据。
connect
获取selector
函数和MainComponent
类,并提供新的Container
类,然后在Provider
组件中使用该类来填充{{ 1}}与数据。
MainComponent
获取当前的应用程序'状态和已分派的操作(其目的是更改当前状态)并提供一个新的,已更改的应用程序'状态。
reducer
是函数,将以前的所有函数连接在一起。这一个"更改" dispatch
的状态。需要MainComponent
,然后针对当前应用点击action
'州。获取的状态和操作将传递给Store
函数,该函数提供新的应用程序状态。这个新状态在reducer
内存储为currentState
,然后传递给Store
函数,该函数会过滤状态,仅采用selector
所需的内容,然后更新MainComponent
的{{1}}并使其重新呈现。
这个简化的数据流/交互图是否正确?或者我有一些根本的误解?
谢谢!