【发布时间】:2020-03-16 09:13:43
【问题描述】:
我有一个卡片组件如下
<div
onClick={e => {
console.log("DEMAND CARD CLICKED");
if (isSelectionActive) {
setSelected();
}
}}
>
<DemandCardFooter
demandId={id}
totalBooked={totalBooked}
totalDemand={totalDemand}
/>
</div>
这是<DemandCardFooter/> 的样子:
<div className="vt-card-footer d-flex justify-content-between align-items-baseline px-3">
<DemandSelector demandId={demandId} />
<p className="lead font-weight-bold mb-0">
<span className="text-success">{totalBooked}</span> / {totalDemand}{" "}
<small className="text-muted font-weight-normal">Units.</small>
</p>
</div>
最后这就是<DemandSelector/> 的样子:
const DemandSelector = ({ demandId }) => {
const [isChecked, setChecked] = useRowSelector({
path: "demands",
payload: { id: demandId }
});
return (
<Checkbox
checked={isChecked ? true : false}
onClick={e => {
console.log("CHECKBOX CLICKED");
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
setChecked();
}}
/>
);
};
我的问题是当我点击复选框时,复选框的onClick 和卡片的onClick 都被触发了,有什么办法可以将回调限制在最低级别?
【问题讨论】:
-
e.stopPropagation();有什么问题我可以看到您在代码中使用了它。它应该防止事件传播。
标签: javascript reactjs event-handling dom-events event-bubbling