似乎React组件在其父组件渲染时总是运行其渲染方法,即使子组件的状态或道具没有更改,即使子组件没有状态或道具。
这应该是吗?这里面有没有低效的地方?将子组件切换到PureComponent可以解决这一问题,并且子组件不会重新加载。我应该更喜欢纯组件而不是常规组件吗?
如果你想控制什么使组件重新呈现,那么你应该使用应该组件更新
,它可以用于所有反应组件,除非它们是无状态的功能组件。PureComponent基本上自动使用应该组件更新
,并对过去和当前的道具/状态进行浅层检查,如果有更改,它将重新渲染。
有时,您可能正在处理更复杂的数据结构,并希望自己控制shouldComponentUpdate
,在这种情况下,只需遵循此处的生命周期方法说明即可。
https://facebook.github.io/react/docs/react-component.html#shouldcomponentupdate
这里也是PureComponent的信息
https://facebook.github.io/react/docs/react-api.html#react.purecomponent