我有这样一个场景,当单击父元素时,它会翻转以显示具有不同 colored颜色 的子元素.不幸的是,当用户点击其中一种 colored颜色 时,也会触发家长的"点击"事件.

How can I stop the event trigger on parent when the child is clicked?

可能的解决方案我想知道:

  1. CSS?

  2. Using Ref
    单击子元素时,记录父React元素的ref,将event.target与参考进行比较?我不喜欢这样,因为我不喜欢全球ref强.

我们将非常感激您的 idea 和更好的解决方案.问题是: 单击子对象时如何停止父对象上的事件触发器?

推荐答案

你可以用stopPropagation

stopPropagation-防止当前事件在 起泡阶段

var App = React.createClass({
  handleParentClick: function (e) { 
    console.log('parent');
  },

  handleChildClick: function (e) {
    e.stopPropagation();
    console.log('child');
  },

  render: function() {
    return <div>
      <p onClick={this.handleParentClick}>
        <span onClick={this.handleChildClick}>Click</span>
      </p>
    </div>;
  }
});

ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

Css相关问答推荐

隐藏div后缺少div的InnerHTML

如何允许在bslb中 Select 输入重叠卡片?

当面板以Angular 上升时如何定位下拉面板

寻找组件中最大的元素来设置其他组件的高度

如果父元素是弹性元素,则不会显示带有纵横比的空div

如何使用来自单独模块的代码将自定义标头插入到使用 DT Shiny 呈现的表中?

Angular Material - 将 matsnackbar 置于所有对话框之上

如何在 VS Code 中获得 JavaFX CSS 属性的自动完成功能?

在变量中存储匹配 Select 器的子元素的计数

我怎样才能准确地获得虚构文本内容宽度的边距?

用于替代渲染的 CSS 嵌套

宽度为 x VW 的元素似乎对窗口调整大小没有react

使用border-radius CSS时平滑边框

CSS,居中的 div,缩小以适应?

在 中制作等宽的列

如何在 Chrome 中模拟偏好 colored颜色 方案媒体查询?

无法使用 Bootstrap 3 更改占位符 colored颜色

如何设置表格单元格的最大高度?

在CSS中将文本和 Select 框对齐到相同的宽度?

使用 inline-block 换行?