我有一个组件,其中我渲染了一个Popover
组件:
// HeaderMenu.tsx
const HeaderMenu = () => {
const ShowMenu = () => {
return (
<div className={classes.profile}>
<ul>
<Notifications />
</ul>
<ul>
<li onClick={handleClose}><Link to={`/profile/${currentUserVar().id}`}>Profile</Link></li>
<li onClick={handleClose}><Link to='/' onClick={logout}>Logout</Link></li>
</ul>
</div>
);
};
return (
<div>
<Button onClick={handleClick}>
<AccountCircleIcon className={classes.profileIcon} />
</Button>
<Popover
id={id}
open={open}
anchorEl={anchorEl}
onClose={handleClose}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left',
}}
>
<ShowMenu />
</Popover>
</div>
);
};
我可以在ShowMenu
函数中使用onClick={handleClose}
,但我还有一个嵌套组件:通知
。在这个组件中,我呈现了一个带有一些链接的列表:
// Notifications.tsx
<Link to={`/profile/${notification.followedUser.id}`}>{notification.followedUser.user_name}</Link>{' '}
如果单击了通知
组件中的链接,我将如何调用标题菜单
组件中的handleClose
函数来关闭弹出窗口
?
我可以使用反应变量触发通知
组件的更改(如果单击了链接),并通过调用handleClose
函数对HeaderMenu
组件中的更改做出反应。但我希望有更好的办法。有什么建议吗?
在您的通知组件中添加一个onDemestClop
prop:
function Notifications({ onRequestClose }) {
return <div onClick={onRequestClose}>Notifications</div>;
}
const ShowMenu = ({ onRequestClose }) => {
const classes = makeStyles();
return (
<div className={classes.profile}>
<ul>
<Notifications onRequestClose={onRequestClose} />
</ul>
<ul>
<li onClick={onRequestClose}>
<Link to={`/profile/1`}>Profile</Link>
</li>
<li onClick={onRequestClose}>
<Link to="/" onClick={() => {}}>
Logout
</Link>
</li>
</ul>
</div>
);
};
在父组件中,按如下方式传递回调:
const classes = makeStyles();
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const id = open ? "simple-popover" : undefined;
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<div>
<Button onClick={handleClick}>
<AccountCircleIcon className={classes.profileIcon} />
</Button>
<Popover
id={id}
open={open}
anchorEl={anchorEl}
onClose={handleClose}
anchorOrigin={{
vertical: "bottom",
horizontal: "left"
}}
>
<ShowMenu onRequestClose={handleClose} />
</Popover>
</div>
);
我正在尝试在我的网站上做一个标签功能,我希望有那个标签响应。所以我做了这样的代码: null null 现在我有两样东西, > 首先,我希望在单击标题(伦敦、巴黎、东京)时关闭选项卡,然后在单击该标题时从该标题中删除活动类。 其次,我希望有两个标签在行的响应,第三个标签在第二行,然后单击打开被点击的标签,然后向下推第三个标签。 任何提示都会有帮助,提前谢谢
问题内容: 我在Bootstrap 3中有或多或少的标准导航 它通常会在较小的设备上崩溃。单击菜单按钮可展开菜单,但是如果我单击(或触摸)菜单链接,菜单将保持打开状态。要关闭它又该怎么办? 问题答案: Bootstrap的默认设置是在单击菜单项时保持菜单打开。您可以通过调用要折叠的jQuery元素来手动覆盖此行为。
问题内容: 我有一个Twitter Bootstrap下拉菜单。正如所有Twitter Bootstrap用户所知,单击(甚至在其中单击)时,关闭菜单。 为避免这种情况,我可以轻松地在下拉菜单上附加一个click事件处理程序,只需添加著名的即可。 但是,这看起来很简单,而且是非常普遍的行为,而且由于(以及)事件处理程序都委派给了对象,因此这些元素(上 一个/下一个 控件,…)上的事件将被“忽略”。
我有一个Twitter引导下拉菜单。正如所有Twitter引导用户都知道的那样,下拉菜单会在点击时关闭(甚至在其中点击)。 为了避免这种情况,我可以很容易地在下拉菜单上附加一个click事件处理程序,并简单地添加著名的。 但是,这看起来很简单,也是一种非常常见的行为,而且由于(以及)事件处理程序被委托给对象,因此这些元素(Prev/Next controls,...)上的事件将被“忽略”。 依赖T
我正在使用可点击的下拉菜单进行导航。下拉列表使用输入标记。我陷入困境的地方是,如果访问者单击页面上的其他地方,我需要关闭下拉列表。我正在尝试使用目标属性、matches()方法和onclick事件。 我在控制台中注意到的是,当我打开下拉列表时,两个条件语句都出现了,下拉列表没有打开。这就好像下拉列表同时打开和关闭。 我做错了什么?我如何让它正常工作,以便用户只需打开下拉菜单,并在单击网页上的其他位
当我们点击“添加”链接时,我试图呈现需要组件。下面是主要组件的代码: 下面是以防万一的需求组件: 我在第一次单击add链接时实现了我试图实现的目标,即在第一次单击add链接时,need组件没有任何条件地被呈现,当我单击“add”时,need组件再次被呈现,但当我第二次单击“add”链接时,我没有看到任何变化。为什么会这样,我希望在每次单击“Add”链接时呈现Need组件。