【发布时间】:2019-07-13 12:00:03
【问题描述】:
tl;dr:当您在 render 方法中创建对象/组件以作为 props/children 传递给渲染组件时,它是否无法通过 shouldComponentUpdate 中的 React.PureComponent 和 prop 检查?
我经常看到类似的模式:
render() {
const commentTrigger = <Button>Comment</Button>;
const deleteTrigger = <Button>Delete Thread</Button>;
const someComponentProps = {
prop1: this.getProp1()
prop2: this.props.prop2
}
return (
<div>
<SomeModal trigger={commentTrigger} />
<SomeOtherModal trigger={deleteTrigger} />
<SomeComponent {...someComponentProps}
</div>
)
}
这是否会使 SomeComponent 中的 .PureComponent 检查或 shouldComponentUpdate 检查失败,因为 someComponentProps 每次都是不同的对象,特别是(假设 this.getProp1() 是新创建的对象)单独 prop1 会导致这些测试失败并且最终重新渲染组件?如果 this.getProp1() 只是一个数字呢?
否则,是否有充分的理由不以这种方式编写 React 组件? 提前感谢您的帮助。如果我应该改写问题或澄清任何事情,请告诉我。
【问题讨论】:
标签: javascript reactjs