【发布时间】:2020-07-02 14:33:00
【问题描述】:
我正在尝试创建一个 React Material Popover(https://material-ui.com/api/popover/) 元素,当用户将鼠标悬停在 TableRow (https://material-ui.com/api/table-row/) 上时显示,当用户将鼠标悬停在 TableRow 之外时隐藏。
我已经尝试过的:
const handlePopoverOpen = event => {
setAnchorEl(event.currentTarget);
};
const handlePopoverClose = event => {
setAnchorEl(null);
};
const open = Boolean(anchorEl);
。 . .
<TableRow
selected={props.selected === key ? true : false}
hover={true}
key={key} className={classes.tableBodyRow}
onClick={() => props.onSelectChange(key, prop[0], prop[1])}
onMouseOver={handlePopoverOpen}
onMouseOut={handlePopoverClose}
>
。 . .
<Popover
id="mouse-over-popover"
open={open}
anchorEl={anchorEl}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'center',
}}
transformOrigin={{
vertical: 'top',
horizontal: 'left',
}}
onClose={handlePopoverClose}
>
I use Popover
</Popover>
当鼠标悬停在 TableRow 上时会出现弹出框,但随后它会一直闪烁,就像 onMouseOver() 和 onMouseOut() 的无限循环一样。我一直在调查这个问题几个小时,我找不到这个问题的解释。如果有人可以提供帮助,我将不胜感激!
这是一个代码现场演示: https://codesandbox.io/s/heuristic-banach-071f3?fontsize=14&hidenavigation=1&theme=dark
【问题讨论】:
-
你能做一个在线演示吗?这可能有助于其他人快速解决您面临的问题!
-
好的!我会尝试演示一下。
-
这个问题现在直接在 React 中的 MouseEnter 和 MouseLeave 事件上发生在我身上,但它只是发生在我在 Firefox 上测试的 chrome 上并且问题没有发生它似乎在 MouseEnter 上有一个无限循环和鼠标离开事件。如果有人知道如何解决它,我将不胜感激。
-
@cristian.nieto.dev 我记得我从来没有找到解决方案,所以我决定改变设计。但正如我现在所看到的,上面沙箱中提供的链接有效。看看,可能是谷歌浏览器内部的问题
标签: reactjs material-ui popover onmouseover react-material