javascript - 检测点击外部组件
问题描述
所以这是我的代码:
export default ({user, showFriendsInvitations}) => {
const handleBlur = () => {
console.log('blur');
setShowFriendInvitations(false);
};
const handleClick = () => {
console.log(showFriendsInvitations)
setShowFriendInvitations(!showFriendsInvitations);
};
const invites = user.friends.filter(f => f.accepted === false && f.blocked === true);
return (
<div className='inline iconBtnContainer'>
{invites.length > 0 ?
<div className='notificationContainer'>
<p>{invites.length}</p>
</div>
: null}
<button className='iconBtn' onClick={handleClick}>
<CustomSvg/>
</button>
<div className='newInvitationFriendsDropdown' style={{background: 'yellow'}} onBlur={handleBlur}>
{invites.length > 0 ?
<div className='newInvitationFriendsForm displayCenter'>
{invites.map(i => <div key={i}><FriendInvitationContainer invite={i}/></div>)}
</div> : <div className='newInvitationFriendsForm displayCenter'>Brak nowych zaproszeń</div>}
</div>
{showFriendsInvitations === true ? <FriendsInvitesContainer invites={invites}/> : null}
</div>
)
}
这是它的样子:
我想要实现的目标:当用户单击黄色 div 之外的任何位置时,(className="newInvitationFriendsDropdown") 我需要将setShowFriendInvitations
其设置为 false。我尝试使用 handleBlur 执行此操作,但它既不注册onBlur
也不注册onFocus
。
我怎样才能使这项工作?
解决方案
推荐阅读
- jquery - Django 更新表单:不符合要求的格式,“yyyy-MM-dd”
- loops - 如何使用 for 循环使这段代码更短?
- javascript - 将 json 数据集合传递到 DataTable
- c# - 二维数组中的控制
- r - 如何根据两个自变量使用 R 来推断双分变量?
- git - 基本身份验证的 git push 身份验证问题
- python - 没有从 while 循环中获得适当的输出
- python - 构造函数的 DataFrame 错误未正确调用
- c++ - 我们可以有一个字符串树(在 C++ 中)吗?如果没有,最快的解决方案是什么?
- vb.net - 如何在标题单击 VB.NET 的 Datagridview 中对日期进行排序