【发布时间】:2020-01-26 21:52:26
【问题描述】:
在标记为重复之前,它的不同之处。我有这种情况,我想将一些非预定义元素放入子组件中。当用户单击该元素时,它会在父元素事件上触发。单击子项时,如何停止父项上的事件触发器?让我用下面的例子来解释一下-
所以,它基本上是一个手风琴列表,通过单击每个项目的标题 div (list-container__item____title) 将显示正文 div (list-container__item____body)。
现在,在标题 div 中,我有一个链接 (list-container__item____title--link),它打开了一个覆盖(子组件)。覆盖内容来自 API 调用,它的包含是 HTML。我无法为该元素添加更多功能,因为我不知道其中包含什么,它基于用户选择。如果在 HTML 中有一些可点击的元素,如锚点、按钮等,则状态 (activeItem) 将更新为空 ('') 值。结果是相应的项目被折叠。有什么办法可以防止这种情况发生吗?
import React from 'react';
class DiamondFilters extends React.Component {
constructor(props) {
super(props);
this.state = {
activeItem: ''
};
}
handleItemToggle = (name) => {
if (this.state.activeItem === name) {
this.setState({ activeItem: '' })
} else {
this.setState({ activeItem: name })
}
}
render() {
return (
<div className="menu">
<div className="list-container">
<div className={`list-container__item ${this.state.activeItem === "item1" ? 'active' : ''}`}>
<div className="list-container__item____title" onClick={() => this.handleItemToggle('item1')}>
<a className="list-container__item____title--link">Click Here 1</a>
<OverlayModal modalType="full" modalName="item1" />
</div>
<div className="list-container__item____body">
<p>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.</p>
</div>
</div>
<div className={`list-container__item ${this.state.activeItem === "item2" ? 'active' : ''}`}>
<div className="list-container__item____title" onClick={() => this.handleItemToggle('item2')}>
<a className="list-container__item____title--link">Click Here 2</a>
<OverlayModal modalType="full" modalName="item2" />
</div>
<div className="list-container__item____body">
<p>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.</p>
</div>
</div>
</div>
</div>
);
}
}
【问题讨论】:
-
不!不是,你注释掉的链接,这里有一些预定义的元素附加点击事件是不同的情况。
-
event.stopPropagation()不起作用? -
不是。约瑟夫
标签: javascript reactjs