根据文件(https://reactjs.org/docs/react-api.html#react.purecomponent)
" React.PureComponent与React.Component完全相同但实现 shouldComponentUpdate()具有浅的prop和状态比较。"
因此,如果我定义类似下面的内容,
const MyView = () => {
return (
<div>Hello Stateless Component</div>
)
};
是React.PureComponent吗?它是否做浅浅的道具和状态比较?
答案 0 :(得分:2)
无状态组件或官方名称React Stateless Functional Component(RSFC)
没有“州”。
React组件接收用于从外部传递参数的道具,并使用state
对象作为inside state control object
,我们调用setState
函数来修改state
对象以触发组件的重新呈现, RSFC
只接收道具并返回相应的JSX元素,它没有“内部状态”对象。
PureComponent
是React.PureComopnent
,它不是一类组件的通用术语,它是可以扩展的React.PureComponent
类,我们使用
class MyComponent extends React.PureComponent{}
告诉我MyComponent
是纯粹的组件。
如果您想要<Clock/>
组件展示和更新时间本身,您应该使用PureComponent
并且无法控制RSFC
有关differences between Component and PureComponent
this article的更多信息可能是帮助。
答案 1 :(得分:1)
首先,您编写的组件是功能组件,它不是纯组件。
Pure Component意味着您知道如果组件获得相同的props和状态,则不需要重新呈现自身或其子组件,因此它从shouldComponentUpdate方法返回false,以便不执行componentWillUpdate,render和componentDidUpdate。