PureRenderMixin mixin现在已经过时了吗?

时间:2016-02-14 09:52:02

标签: reactjs

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

1 个答案:

答案 0 :(得分:1)

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数据的可变性意味着你不能只假设道具是不可变的,所以纯粹的渲染优化不能只是默认打开对于组件,功能与否