Bat*_*man 3 javascript reactjs ag-grid ag-grid-react
我有一个单元格渲染器,它返回行上的名称属性和对象:
const nameRenderer = ({ value, data }) => {
const { id: queueId } = data;
return (
<Box>
<div className="row-hidden-menu">
<IconButton
icon="menu"
onClick={({ event }) => {
event.preventDefault();
event.stopPropagation();
onMenuClick();
}}
/>
</div>
</Box>
);
};
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我有一个onRowClick函数,但我不希望当我单击nameRenderer. 现在,当菜单打开时,onRowClicked事件将导航到新页面。
有关更深入的解释,请参阅此答案event,但要点是,您从onClick回调中收到的是 React 的合成事件,它是本机事件的包装器。从合成事件中调用stopPropagation()不会阻止真实事件的冒泡,这是 React 框架长期以来的一个怪癖。
解决方案:将onClick事件处理程序附加到真实的 DOM 元素。
function ButtonCellRenderer() {
return (
<button
ref={(ref) => {
if (!ref) return;
ref.onclick = (e) => {
console.log("native event handler");
e.stopPropagation(); // this works
// put your logic here instead because e.stopPropagation() will
// stop React's synthetic event
};
}}
onClick={(e) => {
e.stopPropagation(); // this doesn't work
}}
>
Click me
</button>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4866 次 |
| 最近记录: |