- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Material ui popper,当我使用 popper 外部单击时,我试图将其关闭ClickAwayListener,但我无法让它工作。我在弹出器周围添加了 ClickAwayListener,并尝试将其添加在弹出器中的内容周围,但没有任何效果。
我对 Material-ui 非常陌生,所以我对如何完成这件事有点迷失
这是我的代码
const Experiences = memo(
(props) => {
const { className } = props;
const classes = useStyles(props);
const [anchorEl, setAnchorEl] = React.useState(null);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
// const open = Boolean(anchorEl);
const handleClickAway = () => {
setAnchorEl(false);
};
const experience = (img, title, id, popoverCategory) => (
<div
className="experience"
aria-describedby={id}
id={id}
onClick={handleClick}
onKeyDown={handleClick}
role="button"
tabIndex="0"
>
<img
data-sizes="auto"
className="lazyload"
data-src={img}
alt={title}
/>
<div className="experience-title">
<Typography
color="textSecondary"
variant="subtitle2"
className="highlight highlight1"
display="inline"
>
{ title }
</Typography>
</div>
<ClickAwayListener onClickAway={handleClickAway}>
<Popper
id={id}
open={anchorEl && anchorEl.id === id}
anchorEl={anchorEl}
className={clsx(classes[id])}
modifiers={{
flip: {
enabled: false,
},
}}
>
<Button >x</Button>
<div className={clsx(classes.paper)}>
{
popoverCategory.map(url => (
<img
key={id}
data-sizes="auto"
className="lazyload"
src={url}
alt={title}
/>
))
}
</div>
</Popper>
</ClickAwayListener>
</div>
);
最佳答案
您可以切换您的<Popper />
组件可见性使用父组件本地状态中的变量并将其作为 prop 传递下来:
//dependencies
const { render } = ReactDOM,
{ useState } = React,
{ Popper, Button, Paper, ClickAwayListener } = MaterialUI
//custom popper
const MyPopper = ({isOpen,clickAwayHandler}) => (
<ClickAwayListener onClickAway={clickAwayHandler}>
<Popper open={isOpen}>
<Paper className="popper">There goes my custom popper</Paper>
</Popper>
</ClickAwayListener>
)
//main page
const MainPage = () => {
const [isOpen, setIsOpen] = useState(true),
clickAwayHandler = () => setIsOpen(false),
clickHandler = () => setIsOpen(true)
return (
<div>
<Button onClick={clickHandler}>Toggle pop-up</Button>
{
isOpen && <MyPopper {...{clickAwayHandler,isOpen}} />
}
</div>
)
}
//render
render (
<MainPage />,
document.getElementById('root')
)
.popper {
display: block;
position: relative;
top: 50px;
left: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.12.0/umd/react.production.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js"></script><script src="https://unpkg.com/@material-ui/core@latest/umd/material-ui.development.js"></script><div id="root"></div>
关于javascript - 点击Away 时关闭material-ui popper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59733592/
我正在使用一个 API,不幸的是,调用 get 属性访问器会产生副作用。我如何确保: public void Foo() { var x = obj.TheProp; // is it guarn
我正在 Canvas 上创建一个简单的粒子实验。现在我希望它们在 Canvas 上“逃离”鼠标光标。检测与鼠标的距离不是问题,但如何编码它们的行为? 每个粒子的创建如下: var partic
我正在尝试将 Laravel 4 应用程序的一部分移植到 Lumen,但我无法找出 Laravel 4 的 Redirect::away(...); 函数的等价物流明。 我试过保持不变,但行不通。我也
在 Unity 场景中,想象一下 一个大的滑动物体(可能是“容器”或“沙发”出于某种原因滑动) 途中有数根2m高的轻质木棍轻轻插在地上。 在现实生活中,棍子会站在那里(首先,这在 PhysX 中实际上
我正在尝试将 Laravel 4 应用程序的一部分移植到 Lumen,但我无法找出 Laravel 4 的 Redirect::away(...); 函数的等价物流明。 我试过保持不变,但行不通。我也
我有一个表格 View 单元格,里面有一个 uilabel ,它获取两点之间的距离(用户当前位置和我选择的另一个点)。问题是,当我更改数据库中的点并重新加载表格 View 时,每个单元格中的英里数都会
我有一个我想要的按钮 .animate-show.ng-hide-add, .animate-show.ng-hide-remove {
在我的网站上,我制作了 坚持到顶部,但是当我向下滚动时它只停留几秒钟/像素,然后它被滚动离开,请参阅下面的代码片段并向下滚动。我想要 nav向下滚动时随时停留在顶部, 除外可见。 HTML
我有一个包含大量繁重任务的项目,这些任务基本上正在构建一个功能齐全的 Assets 管道(转换、源映射、缩小、md5 文件名愿景)。大多数任务都是我在 github 上找到的开源任务,但也有一些任务是
我有一个 winform usercontrol,其中包含多个项目(文本框、按钮...)。现在我遇到了现象,尽管在控件设计器文件中(设计器.cs) 文本框、按钮...仍然被定义。也没有编译错误。当
我不断收到以下错误 Error: "Window navigated away" 并且我不知道如何阻止此错误的发生,当它确实发生时它也阻止我离开我当前的网页开始了我对 Jquery 和 Javascr
我正在寻找如何实现这个场景:我有函数内部的逻辑代码,现在我希望能够在单独的线程中执行此功能。现在我拥有的是这个 .. 的原始实现我简单地初始化线程,在它的启动/运行方法中我保留了函数逻辑。我怎样才能让
我正在尝试从 Windows 10 64 位启动 xampp v3.2.4。我收到图像 error page while connecting mysql 中显示的错误 xampp log 我从sql
我在用 php 编写的导入脚本中遇到“mysql 服务器已消失” 这http://dev.mysql.com/doc/refman/5.0/en/gone-away.html页面列出了可能的原因。但是
因此,当我使用无法解决的 PHP PDO 运行脚本时,我遇到了这个问题。我的脚本正在索引来自不同服务器上不同数据库的信息(主要是选择查询)。 当我开发脚本时,所有数据库都在同一台服务器上,一切都运行良
我知道有很多关于 MySQL 的“Server has gone away”错误的话题,但这个似乎是随机发生的,而且是在不利的情况下发生的。 我正在使用 CodeIgniter 3.0。在我所做的研究
假设我有: [obj for (_, obj) in stack] 此代码假定 stack 中的第一个对象是一个元组,并丢弃元组的第一部分。 如果代码不是元组而是单个对象会怎样? 它是否只忽略被丢弃的
我正在尝试编写代码,当用户将鼠标悬停在按钮上时,它会继续移动按钮(因此它永远不会被实际点击) 我正在使用“style.left”来确定新的按钮位置 这是我编写的函数,它不能像我希望的那样工作: doc
因此,在滚动时隐藏导航栏很容易,只需添加一个带有“top: -50px”的类即可。但是,感觉不是很自然。如果导航栏通过实际滚动隐藏起来,这样滚动的速度总是合适的,那就更好了。我不想将其动画化,而是想将
我习惯于结合使用连接和“IS NULL”来删除行,比如 this 示例: A 有第 1 类数字 1。B 有第 2 类数字 2,但也有第 1 类数字 1。 查询: SELECT people.name,
我是一名优秀的程序员,十分优秀!