【发布时间】:2022-01-10 11:16:42
【问题描述】:
我在我的项目中使用材质 ui。但是我有一个在滚动开始时隐藏工具提示的功能?任何人都可以提出任何建议。谢谢。。
<Tooltip title="Need to hide when page is scrolling" followCursor>
<Box>
Button Groups
</Box>
</Tooltip>
【问题讨论】:
标签: reactjs material-ui next.js
我在我的项目中使用材质 ui。但是我有一个在滚动开始时隐藏工具提示的功能?任何人都可以提出任何建议。谢谢。。
<Tooltip title="Need to hide when page is scrolling" followCursor>
<Box>
Button Groups
</Box>
</Tooltip>
【问题讨论】:
标签: reactjs material-ui next.js
你为什么不用开放状态来控制它?
import * as React from 'react';
import Grid from '@mui/material/Grid';
import Button from '@mui/material/Button';
import Tooltip from '@mui/material/Tooltip';
import ClickAwayListener from '@mui/material/ClickAwayListener';
export default function TriggersTooltips() {
const [open, setOpen] = React.useState(false);
const handleTooltipClose = () => {
setOpen(false);
};
const handleTooltipOpen = () => {
setOpen(true);
};
return (
<div>
<Grid container justifyContent="center">
<Grid item>
<ClickAwayListener onClickAway={handleTooltipClose}>
<div>
<Tooltip
PopperProps={{
disablePortal: true,
}}
onClose={handleTooltipClose}
open={open}
disableFocusListener
disableHoverListener
disableTouchListener
title="Add"
>
<Button onClick={handleTooltipOpen}>Click</Button>
</Tooltip>
</div>
</ClickAwayListener>
</Grid>
</Grid>
</div>
);
}
【讨论】:
onClick 事件打开工具提示。我的问题是它不应该在页面滚动时打开。我的意思是当页面滚动时工具提示应该隐藏!
您可以按照@Samira 的建议做类似的事情,但改为听onScroll 事件。
onScroll={() => {
if (open) {
setOpen(false);
}
}}
这可能有点棘手,因为滚动事件比徒手捕捉麻雀更难?
在sandbox example 中,我必须明确设置overflow 和height 才能触发此事件。我注意到onWheel 事件不需要这些样式,但是它不会在使用键盘滚动时触发。
编辑
如果要在整个页面滚动上隐藏工具提示,可以将事件处理程序移动到document元素:
React.useEffect(() => {
document.addEventListener("scroll", () => {
setOpen(false);
});
}, []);
different sandbox 展示了它的工作原理。
【讨论】:
onScroll事件?
false,只是想优化一点而不更新状态,但似乎在文档事件中它没有将其视为true,尽管工具提示显示在滚动之前。