- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我知道没有一种“正确”的方法,但我想就每种方法的优缺点进行对话。
所以,读完 Dan Abramov 的 post 后和 comment ,并回顾this教程,我想知道这两种不同方法的优缺点:
方法A:
├── Smart / Container component
│ ├── Dumb / presentation component
│ │ ├── Dumb / presentation component
│ ├── Dumb / presentation component
方法B:
├── Smart / Container component
│ ├── Dumb / presentation component
│ │ ├── Smart / Container component
│ ├── Dumb / presentation component
这里的主要区别在于您管理状态的方式。在选项 B 中,最深层的组件应该了解 redux(例如 dispach),这可能是一个缺点。在方法 A 中,您可能需要在许多 Dumb 组件之间沿树传递 props。
编辑
一件奇怪的事情是在 Redux docs 中,在“传递 Store”部分,您可以找到“Provider”( react 上下文)后面对“magic”的引用。在上下文文档中明确指出:
Just as global variables are best avoided when writing clear code, you should avoid using context in most cases
和:
Before you build components with this API, consider if there are cleaner alternatives. We're fond of simply passing the items as an array in cases like this
所以,据我所知,这是某种不好的做法? (选项B...)
最佳答案
这变成了可读性和重新渲染性能的问题。有时,通过几个级别显式传递 props 可能更具可读性。其他时候,如果您启动一个新连接并在那里提取您需要的数据,可能会更容易理解。另请注意 connect()
做了很多工作来确保您自己的组件仅在确实需要时重新渲染,因此当组件连接时您实际上可以获得一些潜在的性能改进。相反,“哑”组件通常不实现 shouldComponentUpdate
,这意味着它们每次都会重新渲染。
正如您所说,没有单一的正确答案 - 使用 connect()
只要对您自己的应用程序结构有意义。
编辑:
为了回答您有关 React Context 文档的问题,React-Redux 的 <Provider>
组件专门封装了它恰好使用Context这一事实。这样,如果将来 Context API 或行为有任何更改,您自己的应用程序不必担心,因为可以通过更新 Provider 来处理。
换句话说,不用担心:)
关于javascript - Redux - 组件不同的方法(智能/哑/容器/演示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909583/
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
在这个abc.php文件中写入如下代码。 ? 1
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我喜欢用 dotvvm 建立一个视频演示网站。当什么都没有发生时,每次从列表中播放新视频时它都必须开始。使用 bootstrap/MediaObject 我找不到“视频准备播放”事件,因此我们可以开始
我正在开发一个拼贴应用程序,为此我使用DKImagePickerController一次选择多个图像。 pod 的 Github 链接是 https://github.com/zhangao0086/
我试图证明 move 构造函数在消除不必要的复制方面的有用性。但是,当我在 Release 中运行时,Visual Studio 优化器会忽略拷贝。当 move 构造函数不可用时不会调用复制构造函数,
我正在尝试用我自己的测试项目重新创建 HornetQ 示例。但是我遇到了类加载器问题。显然,我缺少文档中未指定的一些依赖项。 文档让我添加 hornetq-core-client.jar netty.
这如何在 Markdown 中完成? 我在 Rmarkdown 中使用投影仪演示文稿,我想要幻灯片左侧的图像和幻灯片右侧的文本。 基本上,这是做什么的:https://tex.stackexchang
有时您需要创建一个 非常 Qt4 中的简单单文件应用程序。然而这是有问题的,因为你总是在做 CPP/H 分离,然后 main() 在另一个文件中...... 任何想法如何在单个文件中执行此操作?尽快弄
有很多关于 SAPUI5 拆分应用程序的演示、教程和文档,但我找不到大量非拆分应用程序的演示。哪里可以买到吗? 为什么如此关注拆分应用程序?它们非常适合移动设备,但我认为桌面应用程序不需要它们。 主视
我的页面 div#posts 下的部分根据脚本结果进行更新。这是一个老式的 mysql 选择查询,回显所有结果标签。 例如foreach($输出为$view) echo “{$view['smthin
ReportLab 用户指南中说: The colortest.py script in reportlab/demos/colors demonstrates thedifferent ways i
ReportLab 用户指南中说: The colortest.py script in reportlab/demos/colors demonstrates thedifferent ways i
我从 git 下载了 PF 演示:https://github.com/primefaces/showcase 并运行 mvn package,但收到以下消息: martin@MyUbuntu:~/
我看过一些程序显示惊人的高度详细的 3d 场景和配乐,但让我震惊的是它们都小于 64kB!这些程序如何运作? 最佳答案 他们按程序生成内容。即他们不添加 3d 模型、位图、基于样本的音频文件,...而
我想让这个休息服务工作: http://www.vogella.de/articles/REST/article.html 在3.4章节,我想运行服务,但是好像不可用。我从教程中复制粘贴了代码。 To
有人可以向我指出 JFreeChart 的 XYSplineRenderer 的工作示例吗? 最佳答案 虽然我从未见过该示例,但XYSplineRendererDemo1.java 是一个可以在dem
我已经下载并解压了 Havok demos ,但该项目依赖于一个文件夹: $(HAVOK_SDKS_DIR)/win32/dx/Include 但它没有设置 HAVOK_SDKS_DIR(没有安装程序
我已经检查了 10 种方法,为什么使用谷歌地图的简单应用程序不能工作,但我没有任何正确的解决方案。我还尝试运行位于 ...\android-sdks\extras\google\google_play
我已经从 oracle 下载中下载了 Swingset2 和 SwingSet3 演示文件(来自“使用 Swing 创建 GUI”教程)(并将它们解压缩/解压到用于 NetBeans 编译器的工作区)
我是一名优秀的程序员,十分优秀!