Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 纯ReactJS组件_Javascript_Reactjs - Fatal编程技术网

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>;
    }