【发布时间】:2020-07-02 12:23:02
【问题描述】:
我想在来自 React-Router-Dom 的 Link 组件内的事件对象上触发停止传播方法。我的问题是,当我单击 Link 元素内的按钮时,它无论如何都会将我移动到另一个页面。我看到 stopPropagation 方法无法正常工作,Link 元素上的 onClick 事件正在启动。如何防止这种行为?
我在 codeSandbox 上准备了一个示例,但在此示例中,Link 不会将我移动到另一个页面,而只是刷新页面。
示例 https://codesandbox.io/s/serene-surf-h65dz?file=/src/Home.js
我的代码:
const handleClick = e => {
e.stopPropagation();
return console.log("Works?");
};
return (
<Link to={`/edytuj/${item.ID}`} className="table__row">
<Checkbox
isSelected={isSelected}
toggleSelection={() => handleSelection(item, isSelected)}
></Checkbox>
<TableRowItem>{item.ID}</TableRowItem>
<TableRowItem
src={item.IMAGE}
additionalClassName="table__image"
></TableRowItem>
<TableRowItem>{item.NAME}</TableRowItem>
<TableRowItem>{item.DESCRIPTION}</TableRowItem>
<TableRowItem additionalClassName="table__cost">
{item.COST} zł
</TableRowItem>
<TableRowItem additionalClassName="table__buttons">
<Button className="btn btn__edit" icon="fas fa-pen btn__icon">
Edytuj
</Button>
<Button
onClick={e => handleClick(e)}
className="btn btn__delete"
icon="fas fa-times btn__icon"
>
Usuń
</Button>
</TableRowItem>
</Link>
);
按钮:
const Button = ({ className, icon, children, onClick }) => {
return (
<button onClick={onClick} className={className}>
{children}
{icon && <i className={icon}></i>}
</button>
);
};
【问题讨论】:
-
如果您不想导航,链接的目的是什么?你不能用普通的旧
div吗? -
好的,我修复了... e.preventDefault() 必须在子元素上调用
-
我确实想导航,但在整行上,里面的 2 个按钮都有自己的动作。在这些按钮之外单击会将您转到另一个页面
标签: javascript reactjs react-router