首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Material-ui:如何在嵌套组件中停止单击事件的传播

Material-ui:如何在嵌套组件中停止单击事件的传播
EN

Stack Overflow用户
提问于 2016-01-22 00:35:12
回答 3查看 19.4K关注 0票数 14

我在Paper组件中有一个IconMenu组件。我想阻止单击事件在内部组件( IconMenu)上的传播。这就是我想出来的,但没有明显的结果(我还尝试用onTouchTap替换onClick,用同样的效果替换onMouseUp ):永远不会调用_iconMenuClick方法。

代码语言:javascript
复制
render() {
     return (
         <Paper onClick={this._onClick}>
             <IconMenu iconButtonElement={iconButtonElement} onClick={this._iconMenuClick}>
                 {menuItems}
             </IconMenu>
         </Paper>
     );
}

_iconMenuClick(event) {
    MenuItem.onClick(event);
    event.stopPropagation();
}
EN

回答 3

Stack Overflow用户

发布于 2019-05-28 14:56:19

除了使用event.stopPropagation();之外,还需要注意的是,它应该在onClick事件处理程序中编写。

我犯了一个错误,将它写在一个onChange事件处理程序中,这是不起作用的。

我找到了解决方案here

编辑:

代码语言:javascript
复制
<ListItem button onClick={this.handleListItemClick}>
-       <Checkbox onChange={this.handleCheckboxChange} />
+       <Checkbox onClick={this.handleCheckboxChange} />
      </ListItem>
票数 13
EN

Stack Overflow用户

发布于 2017-06-05 22:05:03

用于停止顶级节点气泡事件:-) event.stopPropagation(); event.preventDefault();

票数 9
EN

Stack Overflow用户

发布于 2016-01-22 18:47:01

我建议的解决方法如下:

代码语言:javascript
复制
render() {
     return (
         <Paper onClick={this._onClick}>
             <IconMenu iconButtonElement={iconButtonElement}>
                 {menuItems}
             </IconMenu>
             ...
         </Paper>
     );
}

_onClick(event){
    if(event.target.innerText==""){ //Or any condition that distinguish the IconMenu from the Paper element
        event.stopPropagation();
        return 0;
    }
    //continue with normal behaviour
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34929267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档