反应:将事件侦听器添加到没有包装器 html 标记的道具中
React: Add Event Listener to props without wrapper html tag
我想在没有包装器 HTML 标记的情况下将事件onMouseEnter
添加到组件属性中。
var tooltipText = this.props.children;
<span onMouseEnter={this.renderTooltip}>{tooltipText}</span>
是否可以将此事件添加到this.props.children
,因为我负担不起包装器跨度。
以下是所有组件代码:
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;
}
}
如果我理解正确,您可以映射组件的子级并使用事件处理程序返回一个新元素。这样的事情能让你走上正轨吗?
class FastTooltip extends Component {
render() {
return React.Children.map(this.props.children, (child) => {
return React.cloneElement(child, {
onMouseEnter: () => { console.log('onMouseEnter'); }
})
});
}
}
相关文章:
- 如何在输入中选择的文本周围包装html标记
- 如何使用jquery检测包装的纯文本并应用html标记
- 用Javascript包装HTML字符串中未包装的部分
- 调用一个按钮点击,该按钮被包装在html页面内的另一个html标记中
- 将字符串列表包装在复杂的 HTML 标记中
- 我正在尝试使用 html 元素包装函数的返回值
- 使用 jQuery 将一个 HTML 标记包装在另一个标签中
- 使用 Javascript 的 replace() 方法用 html 包装单词
- 使用 jquery / javascript 在 Wordpress 中包装一系列 HTML 元素
- 包装 HTML 标记以使所有标记都可单击
- 如何使用jQuery将所有HTML元素包装在DIV中,具体取决于这些HTML元素的总高度
- 反应:将事件侦听器添加到没有包装器 html 标记的道具中
- 当通过jQuery插入DOM时,什么时候应该将HTML字符串包装在单个元素中
- 使用 jQuery 用 html 包装每个元素
- Regexp匹配的标签未包装在html标签中
- 如何操作svg外来对象html文本包装和定位
- 在DOM插入之前用HTML包装字符串
- 用将HTML包装成字符串形式
- 将JSON数组转换为HTML包装的字符串-角度服务
- 如何在不使用html包装的情况下将视图模型数据绑定到Kendo DropDownlist