1

在我的通量应用程序中,我有一个 DropDown React 组件,它使用一组键值对来呈现自己。

我想要两个不同的下拉菜单,一个是 Country Data,另一个是 City Data。

在 Flux 模式中,每个下拉列表都有一个Selection包含所选值的有效负载的操作,相应的存储将使用它来更新其状态。

如何指定哪个下拉Selection操作属于哪个商店?

我可以创建一个特定于每个需求的包装器组件,即CountryDropDownand CityDropDown,并让每个组件创建自己的特定操作CountrySelectedCitySelected但这是惯用的方法吗?如果是,我如何连接底层DropDown组件,以便它的onChange处理程序触发父级的操作?

4

1 回答 1

1

操作不应仅属于一家商店或另一家商店。这很像在 store 中创建一个 setter 方法,这与 Flux 是对立的。

Flux 背后的核心思想之一是所有商店都由所有行动通知。调度程序是将动作分发到所有商店的机制。这使数据流对不断变化的需求保持开放。

您的问题可能有几种不同的解决方案。

我会考虑将 selectedType 字段添加到“城市”或“国家”的操作(或者您可以使用常量而不是字符串)。如果你想保持抽象,你可以将此值作为道具传递给 React 组件。

同样,如果您希望完全灵活地控制子组件的行为,并且您想在父组件中定义它(上面的最后一个问题),您可以将回调作为道具传递给子组件。

正如您所描述的,您可以对每种类型都有单独的操作,但这对我来说似乎是重复代码。

于 2015-03-27T01:24:43.397 回答