【发布时间】:2017-06-30 15:23:54
【问题描述】:
我似乎无法理解为什么高阶组件比常规组件更受重视?我读了一篇关于它们的教程,高阶组件很好,因为它们:1)允许代码重用、逻辑和引导抽象。 2)能够进行渲染劫持。 3)能够抽象状态和操作它们。 4)能够操纵道具。来源:link
代码中的高阶组件示例如下所示:
function refsHOC(WrappedComponent) {
return class RefsHOC extends React.Component {
proc(wrappedComponentInstance) {
wrappedComponentInstance.method()
}
render() {
const props = Object.assign({}, this.props, {ref: this.proc.bind(this)})
return <WrappedComponent {...props}/>
}
}
}
这些看起来与接收道具的常规类定义几乎完全相同,并且您仍然能够在该类中“操纵道具”和“操纵状态”
class Something extends React.Component {
constructor(props) {
super(props);
this.state = { food: 'no_food_received_yet' }
}
componentDidMount() {
this.setState({ food: 'apple' });
}
render() {
return (
<div>
<p>{ this.state.food }</p>
<h2>{ this.props.food }</h2>
</div>
);
}
}
实际上我并没有去操纵或改变道具,但我可以接收它们,将它们应用到状态并输出该状态。
这并不是要抨击高阶组件——这实际上是完全相反的。我需要了解我错在哪里以及为什么我应该将高阶组件集成到我的 react 应用程序中。
【问题讨论】:
标签: javascript reactjs