如果在React中将stateless functions用于仅用于哑渲染的组件,那么是否甚至需要PureRenderMixin?如果它仍然在现代容器/无状态React结构中起到某些作用,那是什么?

最佳答案

PureRenderMixin对无状态组件和有状态组件都很有帮助,因为它使您可以选择在发生任何更改时取消更新。

默认情况下,无状态功能组件不是纯组件,它们只是“无状态”,这不是一回事。纯组件是在给定相同输入集(属性和状态)的情况下其渲染输出相同的组件。就像功能不一定是纯粹的(即它们可能会产生副作用)一样,功能组件也是如此。

他们可能依赖于关闭状态:

let state = { bar: true }

let Foo = (props) => <span {...props} {...state} />


或者更有可能道具不是一成不变的:

let List = props => (
  <ul>{props.list.map(item => <li>{item}</li>)</ul>
)


其中list可以添加或删除项目而无需更改对数组的引用

在任何情况下,仅由于组件是无状态且功能不同于默认情况下的纯组件。

要回答一个主要问题:不,它们不是过时的,因为JavaScript数据的可变性意味着您不能仅仅假设props是不可变的,因此不能默认为组件默认启用纯渲染优化,是否运作

关于reactjs - PureRenderMixin mixin现在过时了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35390436/

10-10 05:15