我正在开发一个使用aggressive composition的项目(每个组件的树中都有很多组件,并且每个组件中也有很多组件),并使用Redux管理状态。
例如:
<ComponentA>
<ComponentB>
<ComponentC>
...
<ComponentZ>
</ComponentZ>
</ComponenetC>
</ComponentB>
</ComponentA>
这些组件中的每个组件都具有它们自己的功能,可以更改应用程序的状态。
什么是管理更改应用程序状态的所有功能的最有效方法?
-使用一个将组件A与操作连接起来并在组件树中向下传递所有功能的容器组件
示例:
<ComponentA
funcB={this.props.funcB}
funcC={this.props.funcC}
...
funcZ={this.props.funcZ}
>
-每个组件都有其自己的容器,因此在组件树中将传递较少的功能,但是每个组件都需要一个额外的组件才能建立连接:
<ContainerA>
<ContainerB>
...
<ContainerZ />
</Container>
</ContainerA>
一种可能的方法是将父级连接到Redux,并让连接的父级驱动其子级,以便子级通过父级传递给他们的道具了解Redux存储更改。并通过调用作为道具传递的父母的方法来改变商店。但是,已关联的父级的孙子将自己连接到Redux商店,而不是他们的孩子,依此类推。