【问题标题】:React + Redux - Why not connect all the components?React + Redux - 为什么不连接所有组件?
【发布时间】:2016-12-07 19:21:01
【问题描述】:

我多次听说,仅@connect 顶层(智能组件)是一种很好的做法,然后他们可以将 props 传播到其较低层(哑组件)。

在我看来,当 @connect(ing) 它们时仍然可以创建哑组件 - 只需将要显示的原始对象\参数传递给它们。

通过@connect 将所有组件连接到商店是一个好习惯吗? 对性能有影响吗?

有什么想法吗?

【问题讨论】:

    标签: reactjs redux


    【解决方案1】:

    来自 Redux 的作者 Dan Abramov 的推文:

    在 Redux 示例中强调“顶部的一个容器组件”是 一个失误。不要把这当作格言。

    也可以在https://twitter.com/dan_abramov/status/668585589609005056阅读他的回复

    【讨论】:

    【解决方案2】:

    Dan Abramov 几年前在 Medium 上的一篇文章中谈到了这一点: https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.vtq34z4ir

    他称它们为“展示”组件与“容器”组件。我发现这些名字很奇怪而且令人困惑,这使得它(甚至)更难理解。但我认为,目标是能够将特定于应用程序的东西(包括与 Redux 存储的细节的连接)集中到你的容器组件中。

    演示组件与您的特定应用程序更加隔离。它们更容易独立测试,因为它们是轻量级的,并且可以在根本不调用 Redux 的情况下站立起来。它们更有可能被重用,因为它们没有连接到您的应用程序的特定数据格式(或根本没有连接到 Redux)。

    就我个人而言,我不相信这种区别值得保持。真正轻量级、可重复使用的组件通常是从其他人那里进口的。实际上,您编写的任何内容最终都会与您的数据存储的细节相关联......因为这是您首先编写它的重点。编写以前从未编写过的真正可重用的组件是一种相对罕见的情况。如果您确实制作了一个,那么事后将其解脱出来会相对容易。 (我很重视不要过度思考你的框架,因为你往往会弄错它们并且无论如何都必须重构。)

    不过,它仍然是由发明 React 的人直接支持的范例,并且有庞大的用户群成功地使用它编写代码。所以如果我是你,我会接受他的意见而不是我的意见。

    【讨论】:

      【解决方案3】:

      您不应该严格只连接顶级组件。一旦你开始这样做,你会发现它们中的一些变得非常很大,并且传递了它们实际上并没有呈现或使用的数据。

      解决该问题的方法是连接依赖于未使用数据的低级组件。您在组件树中移动得越低,组件将变得越通用(愚蠢)和可重用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-07
        • 2019-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2017-12-17
        相关资源
        最近更新 更多