我正在向自己介绍 React 的 HoC 模式。
我有一个视频播放器组件,有时需要select
更改视频 src url 中的参数。
为了简化事情,这是我的 HoC 的简化版本:
function withTimeControl(PlayerComponent) {
return class extends Component {
state = {
src: ''
}
updatePlayerDelay = (event) => {
this.setState({
src: event.target.value
})
}
render() {
return(
<div>
<PlayerComponent
title={this.props.title}
src={this.state.src}
/>
<PlayerTimeComtrol
label={this.props.label}
onChangeHandler={this.updatePlayerDelay}
/>
</div>
);
}
};
}
要使用它,我会这样做:
const PlayerWithTimeControl = withTimeControl(Player)
// ...
<PlayerWithTimeControl title='Player title' label='Time control label' />
PlayerComponent
被包装的组件在哪里。HoC 基本上是广告一个组件,PlayerTimeComtrol
用于更改视频播放器的 src。
这是有效的用例吗?还有其他更准确的解决方案吗?也许只使用组件包装器而不是 HoC?