首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React中的PureComponent和Component在内部实现上有什么不同?

React中的PureComponent和Component在内部实现上有什么不同?
EN

Stack Overflow用户
提问于 2019-02-14 10:09:07
回答 2查看 60关注 0票数 1

我在昨天的求职面试中被问到一个问题:What are the internal implementation differences between PureComponent and Component in React,我对这个问题缺乏了解,把我的面试搞砸了。

我知道它们之间的详细区别,包括React文档中的所有内容,以及何时和如何使用它们,但我不知道它们在React源代码中的实现。

你能给我一些这个问题的简要总结,以及如何浏览React的源代码以获得更深层次的知识的一些建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-14 10:20:49

纯组件和普通组件实际上是相同的,除了普通组件不会为您处理生命周期方法shouldComponentUpdate()这一事实。在纯组件中,当属性或状态发生变化时,纯组件将通过对属性和状态进行浅层比较来自动检查,以查看组件是否需要重新呈现。

常规组件不会进行这种比较(除非您自己在shouldComponentUpdate()中指定了一些比较)。

你可以在differences here上找到一篇很好的文章。以及实际的源代码差异here

这是实际的代码差异。

代码语言:javascript
复制
if (ctor.prototype && ctor.prototype.isPureReactComponent) {
  return (
    !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)
  );
}
票数 3
EN

Stack Overflow用户

发布于 2019-02-14 10:22:45

唯一的区别是PureComponent有一个预定义的shouldComponentUpdate。您可以在当前的react code on github中看到它

代码语言:javascript
复制
if (ctor.prototype && ctor.prototype.isPureReactComponent) {
  return (
    !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)
  );
}

它只是简单地检查props和state中是否存在浅层相等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54682238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档