想象一个用于触摸行为的 HOC,它通过 onTouchStart 检测按键触摸事件。现在使用触摸 HOC 封装的组件将拥有自己的处理程序逻辑。我的 HOC 组件如何调用包装的组件处理函数?
只是为了得到一个想法,这就是我需要的。在研究,我发现这是使用REF调用目标组件。我想知道是否有更好的方法来实现这一点。
触摸行为 HOC
const TouchBehavior = (WrappedComponent) =>
class extends React.Component {
constructor(props) {
super(props);
this.state = {
active: false,
};
this.handleAction = this.handleAction.bind(this);
this.setActiveState = this.setActiveState.bind(this);
this.resetActiveState = this.resetActiveState.bind(this);
}
handleAction(e) {
e.preventDefault();
this.setActiveState();
//call wrapped component specific handler logic here
_.delay(() => this.resetActiveState() , 150);
}
setActiveState() {
this.setState ({
active: true
});
}
resetActiveState() {
this.setState ({
active: false
});
}
render() {
let touchBehaviorProps = {
onTouchStart: this.handleAction
};
return <WrappedComponent {...this.props} touchBehaviorProps={touchBehaviorProps} />
}
};
包裹组件
class Button extends React.Component {
componentSpecificHandlerLogic(){
//logic goes here
}
render () {
return <button {..this.props.touchBehaviorProps}></button>
}
}