提问者:小点点

为什么建议React的PureComponent将其所有子项都设置为“纯”


阅读了React官方文档后,我发现了关于PureComponent的以下内容:

此外,反应。PureComponent的shouldComponentUpdate()跳过整个组件子树的道具更新。确保所有子组件也是“纯”的。

为什么跳过整个子树的道具更新意味着避免非纯组件?PureComponent组件子树中的非纯组件的后果是什么(一般情况下以及当它不被设计/不应该响应道具更改时)。


共2个答案

匿名用户

对于同一组输入道具的纯组件将给出完全相同的结果,不仅对于它自己,而且对于整个DOM树。当您声明一个PureComponent时,您不仅需要考虑道具和状态,还需要考虑上下文PureComponents阻止任何上下文更改。考虑一个例子

<MyApp>      
 <Router>    // react-router.
  <App>   // A PureComponent
   <Switch>  // react-router Switch
     <Route ....>
   </Switch>
  </App>
 </Router>
</MyApp>

React路由器的路由器将在上下文的路由器道具中存储当前位置。路由器的交换机会将其读回并选择一条路由。但由于App是一个非常纯粹的组件,它不会对路由器中的上下文变化做出反应,因为它不使用该值,应该忽略它们。因此,当您有一个PureComponent时,您不仅应该考虑该组件,还应该考虑其嵌套的子组件。所以基本上你也会让你所有的孩子保持纯洁。

匿名用户

每个道具都应该是不可变的。它需要更容易调试。例如。通过道具放置用户数组。但是,组件之一:user.name=值。子组件可能很多,你会很难理解,什么是用户组件更新?

相关问题