【问题标题】:Different actions for common components in FluxJSFluxJS 中常见组件的不同操作
【发布时间】:2015-05-30 22:48:44
【问题描述】:

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

我想要两个不同的下拉菜单,一个带有国家数据,另一个带有城市数据。

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

如何指定哪个下拉列表Selection 属于哪个商店?

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

【问题讨论】:

    标签: javascript reactjs reactjs-flux refluxjs


    【解决方案1】:

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

    Flux 背后的核心理念之一是,所有商店都了解所有操作。调度程序是将动作分发到所有商店的机制。这使数据流能够满足不断变化的需求。

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

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

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

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

    【讨论】:

    • 您可以将回调作为道具传递给子组件。 这就是我采用的方法。在父级中,我定义了回调,并将其作为属性传递给子级。在孩子中,我将属性绑定到实际表单控件的onChange
    猜你喜欢
    • 1970-01-01
    • 2010-10-26
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多