我是React的新手,我发现让我感到困惑的事情 .
几乎每个教程都建议使用功能(无状态)组件 . 但是最近我发现如果功能组件是子组件,那么每次父组件状态或者道具改变时它都会被渲染,即使我没有传递任何道具 . 基于类的组件不会发生这种情况 . 这种情况的原因是什么?
我应该只使用基于类的组件才能获得最高性能吗?
以下是您开箱即用的选项:
像你一样使用纯函数:
[]易于编写和理解
[ - ]每次父组件重新渲染时重新渲染(如果你没有传递任何道具可能不是问题)
使用类组件并实现shouldComponentUpdate
[]您可以完全控制重新渲染条件 .
[ - ]需要编写更多代码
使用PureComponent
[]自动使用浅的shouldComponentUpdate,因此编写的代码更少
[ - ]会产生不良副作用(对于复杂对象和非纯子组件无法正确渲染的假阴性)
在您的特定情况下,由于您没有将任何道具传递给您的子组件,因此使用纯函数是完全可以接受的 . 因为这意味着它只是纯粹的静态HTML,并且每次都会重新渲染,即使它是父级的一部分 .
最后,对于更高级的用途,请查看https://github.com/acdlite/recompose
1 回答
以下是您开箱即用的选项:
像你一样使用纯函数:
[]易于编写和理解
[ - ]每次父组件重新渲染时重新渲染(如果你没有传递任何道具可能不是问题)
使用类组件并实现shouldComponentUpdate
[]您可以完全控制重新渲染条件 .
[ - ]需要编写更多代码
使用PureComponent
[]自动使用浅的shouldComponentUpdate,因此编写的代码更少
[ - ]会产生不良副作用(对于复杂对象和非纯子组件无法正确渲染的假阴性)
在您的特定情况下,由于您没有将任何道具传递给您的子组件,因此使用纯函数是完全可以接受的 . 因为这意味着它只是纯粹的静态HTML,并且每次都会重新渲染,即使它是父级的一部分 .
最后,对于更高级的用途,请查看https://github.com/acdlite/recompose