Javascript 纯ReactJS组件
丹·阿布拉莫夫 …如果在相同的道具和状态下保证返回相同的结果,则组件为纯组件 因此,如果为组件提供相同的道具,则始终会返回相同的输出。这是清楚的 他接着说 纯成分。。。不要依赖于道具或设备的深度突变 状态,因此可以通过浅层渲染优化其渲染性能 比较它们的Javascript 纯ReactJS组件,javascript,reactjs,Javascript,Reactjs,丹·阿布拉莫夫 …如果在相同的道具和状态下保证返回相同的结果,则组件为纯组件 因此,如果为组件提供相同的道具,则始终会返回相同的输出。这是清楚的 他接着说 纯成分。。。不要依赖于道具或设备的深度突变 状态,因此可以通过浅层渲染优化其渲染性能 比较它们的shouldComponentUpdate()hook 但这意味着我可以用相同的道具对象提供一个纯组件,但是在道具对象的内部有一个更深的差异,并且该组件将呈现相同但不同(尽管差异很大)的道具。这意味着不强制执行此约束 将组件声明为扩展了PureCo
shouldComponentUpdate()
hook
但这意味着我可以用相同的道具对象提供一个纯组件,但是在道具对象的内部有一个更深的差异,并且该组件将呈现相同但不同(尽管差异很大)的道具。这意味着不强制执行此约束
将组件声明为扩展了PureComponent
真的是在对ReactJS说“我知道我在做什么。我保证我使用的是不可变状态。所以你只需要在shouldComponentUpdate
中执行浅层的道具比较”吗
最后,PureComponent
s默认提供了一个浅层的shouldComponentUpdate
方法-这可能会被您想要的任何东西覆盖(甚至是一个深度比较)
将组件声明为extensedpureComponent真的是为了
ReactJS“我知道我在做什么。我保证我使用的是immutable
因此,您只需要在中执行浅层道具比较
是否应该更新组件“
对
最后,PureComponents提供了一种简单的shouldComponentUpdate方法
默认情况下,这可能会被您想要的任何内容覆盖
(甚至是一个深刻的比较)
你可以覆盖它。React将尝试不这样做。在这种情况下,最好从
组件继承 请阅读有关纯渲染检查的内容
还有好文章:
类欢迎扩展React.PureComponent{
render(){
回礼
}
}
你好=()=>{
回复你好;
}
上面有一个非常简单的欢迎纯组件的示例
还有Hello无状态组件。当你在你的父母身上使用这两个
组件,您将看到Hello将在父组件出现时重新渲染
将重新渲染,但欢迎组件不会
同样,在您希望使用组件的生命周期方法的情况下
然后我们必须使用纯组件,因为无状态组件没有
生命周期方法
class Welcome extends React.PureComponent {
render() {
return <h1>Welcome</h1>
}
}
Hello = () => {
return <h1>Hello</h1>;
}