【问题标题】:React.Component doesn’t implement shouldComponentUpdate?React.Component 没有实现 shouldComponentUpdate?
【发布时间】:2018-01-15 21:25:56
【问题描述】:

根据文档,React.Component 没有实现shouldComponentUpdate

那么组件的生命周期 (the-component-lifecycle) (shouldcomponentupdate) 怎么样?

React.PureComponent 类似于 React.Component。区别 它们之间是 React.Component 没有实现 shouldComponentUpdate(),但 React.PureComponent 用一个 浅的 prop 和 state 比较。

【问题讨论】:

  • 这里有什么问题?
  • @DanielReina 正如您所看到的,在文档的一部分中,他们说 React.Component 没有实现 shouldComponentUpdate 函数,这似乎不是真的,根据另一部分文档。

标签: reactjs


【解决方案1】:

默认情况下,使用ComponentshouldComponentUpdate 返回 true(不会发生 props 的差异),除非它由您定义(结果取决于您输入的内容)。默认情况下,使用 PureComponent react 会对 props 进行浅层区分。

随意看一下react源码,大致检查shouldComponentUpdate是否被定义并且是一个函数。然后检查是否是纯组件,然后默认返回true。

https://github.com/facebook/react/blob/master/packages/react-reconciler/src/ReactFiberClassComponent.js

【讨论】:

  • 所以,当我们扩展 Component 类时,react 不会执行任何检查,并且总是重新渲染整个组件 -_-?
  • 正确,如果你看一下反应源代码github.com/facebook/react/blob/master/packages/react-reconciler/… line 157 checkShouldComponentUpdate
  • 在每个教程中,首先要提到的是 react shadow DOM,事实上,react 总是只更新组件的必要部分。所以,根据你上面写的一切,这不是真的吗?或者也许我错过了什么?
  • 我明白你的意思,我可能在这个问题上错了......但仅仅因为它should更新它并不意味着它will更新
猜你喜欢
  • 1970-01-01
  • 2019-06-30
  • 2019-03-10
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 2011-03-04
  • 2017-04-28
相关资源
最近更新 更多