为什么建议 React 的 PureComponent 所有子组件都“纯”

2024-01-07

看完官方的介绍反应文档 https://reactjs.org/docs,我遇到过this https://reactjs.org/docs/react-api.html#reactpurecomponent关于纯组件:

此外,React.PureComponent 的 shouldComponentUpdate() 会跳过 prop 整个组件子树的更新。确保所有的孩子 成分也是“纯粹的”。

为什么跳过整个子树的 props 更新意味着避免非纯组件? PureComponent 的组件子树中的非纯组件会产生什么后果(无论是一般情况还是在它未设计/不应该响应 props 更改的情况下)。


同一组输入 props 的纯组件将给出完全相同的结果,不仅对于它本身,而且对于整个 DOM 树。当你声明一个PureComponent,你不仅需要考虑道具state, 但是也context. PureComponents阻止任何上下文更改。考虑一个例子

<MyApp>      
 <Router>    // react-router.
  <App>   // A PureComponent
   <Switch>  // react-router Switch
     <Route ....>
   </Switch>
  </App>
 </Router>
</MyApp>

React-router 的 Router 会将当前位置存储在 context 的 router props 中。 React-router 的 Switch 会读回它并选择一条 Route。但是自从App是一种非常纯净的成分,并且will not反应context更改路由器,因为它not using重视并应该忽略它们。因此,当您拥有 PureComponent 时,您不仅应该考虑该组件,还应该考虑其嵌套的子组件。所以本质上你也会让你所有的孩子保持纯洁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么建议 React 的 PureComponent 所有子组件都“纯” 的相关文章

随机推荐

  • 如何使长TextView的一部分在屏幕上可见?

    我在 ScrollView 中有一个 TextView TextView 充满了大文本 任何时候只有部分文本在屏幕上可见 现在我想 以编程方式 强制文本的某些部分对用户可见 例如 我的文字是 Lorem ipsum dolor sat am
  • 我如何知道我的服务器是否有 NUMA?

    从 Java 垃圾收集中跳出来 我遇到了NUMA 的 JVM 设置 http www slideshare net ludomp gc tuning in the hotspot java vm a fisl 10 presentation
  • 无法理解条件执行流程[重复]

    这个问题在这里已经有答案了 一个简单的js片段 为什么总是提示 结果为空 据我了解 if块应该被执行 因为result is true并警惕 结果不为空 这是因为 进行隐式类型转换 如果您使用严格版本 它会做你所期望的 但宽松版型 会将这两
  • Firebase Android 自动登录

    所以我设置了电子邮件 密码注册和登录 那是有效的 我以为 Firebase 已经解决了这个问题 但显然没有 我希望在用户关闭应用程序后 下次打开应用程序时就已经登录 缺什么 class LoginActivity AppCompatActi
  • 使用 nth-child 设置第 4 项及以后项目的样式

    我有一个列表项 我希望第四项及以后的项有不同的background color 我尝试过以下方法 li nth child 4 background color blue 这仅对第 4 个项目进行样式设置 然后我尝试了以下操作 希望它能够为
  • Java 8 多线程:如何实现并行性以及单个线程的超时?

    我想要实现的目标摘要 我想并行执行 N 个任务 这样任何单个任务的运行时间都不应超过两秒 我们可以将此类任务标记为失败 作为输出 我想返回成功任务的输出和失败任务的状态为失败 此外 一项任务的超时不应导致电路中断 即其他任务的执行不应停止
  • 如何在 UML 中表示从模板参数的继承?

    使用 UML 我如何表示A lt Foo gt 在下面的代码中 template lt class T gt class A public T class Foo A lt Foo gt a foo 像这样的东西 对可怜的ascii艺术表示
  • ForkJoinPool - 为什么程序抛出 OutOfMemoryError?

    我想在 Java 8 中尝试 ForkJoinPool 所以我编写了一个小程序来搜索给定目录中名称包含特定关键字的所有文件 Program public class DirectoryService public static void m
  • C# 将字节数组附加到现有文件

    我想将字节数组附加到已经存在的文件中 C test exe 假设以下字节数组 byte appendMe new byte 1000 File AppendAllBytes C test exe appendMe Something lik
  • 嵌套 jQuery 选择器

    无论如何 是否有嵌套的 jQuery 选择器 例如 如果该页面还有一个ID LeadEditForm Title 某处然后执行以下操作 jQuery id A0 R0 Main Phone Number live mousedown fun
  • 在 Android 中使用 EditText 小部件屏蔽输入

    有没有办法可以为 Android 中的 EditText 控件指定输入掩码 我希望能够为社会安全号码指定类似 的内容 这将导致任何无效输入被自动拒绝 例如 我输入字母字符而不是数字 我意识到我可以添加 OnKeyListener 并手动检查
  • 如何检测用户是否不允许位置更新

    如果用户在首次启动时拒绝允许位置更新 我怎么能检测到这个 检查CLLocationManager 的authorizationStatus 方法
  • Environment.getExternalStorageDirectory().listFiles() 返回 null

    我的应用程序中需要一个文件选择器 在尝试了不起作用的第三方库 无内容 后 我尝试自己实现它 并且得到了相同的结果 最奇怪的是 Environment getExternalStorageDirectory listFiles 返回空值 这是
  • 如何让 Pycharm 从测试文件夹递归运行所有 python 单元测试

    我来自 Java 背景 因此我将单元测试组织成单独的并行测试层次结构 以反映我的主项目的结构 我使用 PyCharm 代替 Intellij 或 Eclipse 在这两个 I IDE 中 我可以选择任何正在测试的包 并在此命名空间下递归运行
  • 如何获取 HTML5 画布文本来显示 html 实体?

    我正在解析一个 xml 文件 该文件存储我需要在画布上显示的图像 标题数据 然而 偶尔文件中会有一个实体 当将文本绘制到画布上时 它会将其解释为平面文本 我怎样才能得到 copy 在画布上显示为 这是否可能 或者有人知道一个好的解决方法吗
  • Nhibernate Linq 查询到 QueryOver

    我有以下代码 1 ids GetAnArrayOfIds 2 jobEntities jobEntities Where j gt j Locations Select l gt l Id Any ids Contains 如何使用 Que
  • std::allocate_shared 使用什么类型来分配内存?

    From https en cppreference com w cpp memory shared ptr allocate shared https en cppreference com w cpp memory shared ptr
  • 从 Http Servlet 请求标头读取浏览器/客户端时间

    当向 servlet 发出请求时是否可以读取浏览器 客户端计算机 时间 我不相信是这样 不幸的是HTTPDate http www w3 org Protocols rfc2616 rfc2616 sec14 html sec14 18标头
  • R 中的成对交互矩阵

    我正在尝试计算 R 中的成对矩阵 该矩阵计算个体与其他个体交互的次数 因此该矩阵将包含与个体数量相对应的 N 行和列 我有一个数据框 在单独的列中列出 演员 和 合作伙伴 nn lt data frame actors c DOL DOL
  • 为什么建议 React 的 PureComponent 所有子组件都“纯”

    看完官方的介绍反应文档 https reactjs org docs 我遇到过this https reactjs org docs react api html reactpurecomponent关于纯组件 此外 React PureC