假设我有两个反应组件。
组件 A 是网站所有者可以添加到其网站的电子商务商店。它保存商店的产品,网站的访问者可以选择要添加到购物车的商品。
组件 B 是一个购物车组件,站点所有者可以选择将其添加到其站点的标题中。
我想解决的一个基本用例如下:
- 用户访问该网站并将商品添加到他们的购物车
- 组件 A 执行更新共享购物车商店的操作
- 此购物车商店向组件 B 发出更改警报
- 组件 B 通过从购物车商店获取新的购物车信息来更新其状态
- 新计数反映在标题中
在网站上,像 A 和 B 这样的组件被称为“插件”。当主站点呈现其页面时,它会遍历要在页面上呈现的插件列表。这些插件中的每一个都是相互独立的。
我的问题是,有没有办法让这两个插件中的两个被传递到同一个商店,或者订阅同一个商店,而无需与主父组件交互?
如果这不可行,我的下一个解决方案是将组件 A 和 B 容纳在容器组件 X 中。X 将是一个持有状态和业务逻辑的提供者。A 和 B 将仅包含视图逻辑。X 将呈现为插件,但在页面上不可见,并管理 A 和 B 的状态。
如果我采用这种容器方法,有没有办法从容器中提取 A 和 B,以便在它们链接到同一个商店后独立渲染它们?