[英]React: Add Event Listener to props without wrapper html tag
I would like to add Event onMouseEnter
to component prop without wrapper HTML tag. 我想在没有包装HTML标记的情况下将Event onMouseEnter
添加到组件prop。
var tooltipText = this.props.children;
<span onMouseEnter={this.renderTooltip}>{tooltipText}</span>
Is it possible add this event to this.props.children
, because I can't afford on the wrapper span. 是否有可能将此事件添加到this.props.children
,因为我负担不起包装范围。
Here is all component code: 这是所有组件代码:
class FastTooltip extends Component{
constructor(props){
super(props);
this.renderTooltip = this.renderTooltip.bind(this);
this.state = {
tooltip: false,
};
}
renderTooltip(){
this.setState({ tooltip: true });
}
render(){
var renderTooltip;
var { overlay, placement } = this.props;
var tooltipText = this.props.children;
if( this.state.tooltip ){
renderTooltip = <OverlayTrigger placement={placement} overlay={<Tooltip>{overlay}</Tooltip>}>
{tooltipText}
</OverlayTrigger>
} else {
renderTooltip = <span onMouseEnter={this.renderTooltip}>{tooltipText}</span>
}
return renderTooltip;
}
}
If I understand correctly, you could map your component's children and return a new element with an event handler. 如果我理解正确,则可以映射组件的子代,并使用事件处理程序返回一个新元素。 Does something like this get you on the right track? 这样的事情会让您走上正轨吗?
class FastTooltip extends Component {
render() {
return React.Children.map(this.props.children, (child) => {
return React.cloneElement(child, {
onMouseEnter: () => { console.log('onMouseEnter'); }
})
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.