如果在React中使用stateless functions用于仅渲染渲染的组件,PureRenderMixin是否还需要它?如果它仍然在现代容器/无状态React结构中起到某种作用,它是什么?
答案 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数据的可变性意味着你不能只假设道具是不可变的,所以纯粹的渲染优化不能只是默认打开对于组件,功能与否