为什么通常添加到props的组件创建和使用回调?

时间:2017-07-20 13:10:24

标签: javascript reactjs redux

在ReactJS组件中,我经常看到与UI事件相对应的回调(例如onFormSubmit)通过props库添加到connect对象。

为什么这样做?当然,如果onFormSubmit被创建并且仅由该组件使用,它可以是私有的还是直接添加到组件中?

是否出于可测试性原因?

编辑:是因为对商店的dispatch功能的访问是受控制的,并且可以通过连接访问,以避免组件依赖商店?

2 个答案:

答案 0 :(得分:2)

connect一起使用时,通过道具传递回调可让他们按照您的建议发送动作。

更一般地说,当回调必须在层次结构中进一步修改状态时,一个好方法是将它传递给道具。

答案 1 :(得分:2)

我说背后有一些主要原因,彼此相关:

  1. 建筑/设计将组件拆分为容器和演示组件。

  2. 自上而下的数据流。

  3. 以上设计决策产生以下规则:

    1. 容器组件应该保留其中的逻辑,而演示组件应该只显示数据。当然,这是最纯粹的场景,但实际上就像你说的那样可以处理表现性组件中的一些简单逻辑。然而,保持分裂主要是为了保持演示组件的清洁,同时由于反应的自上而下的性质,能够将逻辑重用于各种表示组件(如果可能)。

    2. 说到redux插入反应。您完全正确,只有容器组件(顶部组件)应连接到商店。并且只能通过道具将特定的状态组件传递给特定的表示组件。

    3. 也许我会简化一下,但是演示组件应该比容器更具优先性。因此,如果您想知道某些组件是应该是容器还是表示 - >由于系统和复杂性的增长而难以保持这样的决定 - >>最终将这样的组件转换成容器。