React (Next.js) hook useOutsideClick 取消了我的链接
React (Next.js) hook useOutsideClick cancels my links
我正在使用以下挂钩来处理 show/hide 下拉菜单的“点击离开”功能:
const useOutsideClick = (ref: NonNullable<RefObject<HTMLButtonElement>>) => {
const [outsideClick, setOutsideClick] = useState<boolean | null>(null)
useEffect(() => {
const handleClickOutside = (e: React.MouseEvent | Event) => {
if (
ref &&
!(ref?.current as unknown as RequiredCurrentRef).contains(
e?.target as Node
)
) {
setOutsideClick(true)
} else {
setOutsideClick(false)
}
setOutsideClick(null)
}
document.addEventListener('mousedown', handleClickOutside)
return () => {
document.removeEventListener('mousedown', handleClickOutside)
}
}, [ref])
return outsideClick
}
export default useOutsideClick
钩子工作正常但是一旦我点击 <a href>
链接(与下拉列表分开的组件)它不会重定向,所以链接不起作用
我该如何解决?
编辑 我正在使用 bulma.css 下拉菜单
我认为您根本不需要创建额外的挂钩。
如果您想在用户点击或离开元素时执行某些操作,您可以使用 onBlur and onFocus 回调。
如果您出于其他原因(例如单击按钮)想要对其进行模糊处理,您可以使用 reference of the anchor 并随时调用 blur()
方法。
我正在使用以下挂钩来处理 show/hide 下拉菜单的“点击离开”功能:
const useOutsideClick = (ref: NonNullable<RefObject<HTMLButtonElement>>) => {
const [outsideClick, setOutsideClick] = useState<boolean | null>(null)
useEffect(() => {
const handleClickOutside = (e: React.MouseEvent | Event) => {
if (
ref &&
!(ref?.current as unknown as RequiredCurrentRef).contains(
e?.target as Node
)
) {
setOutsideClick(true)
} else {
setOutsideClick(false)
}
setOutsideClick(null)
}
document.addEventListener('mousedown', handleClickOutside)
return () => {
document.removeEventListener('mousedown', handleClickOutside)
}
}, [ref])
return outsideClick
}
export default useOutsideClick
钩子工作正常但是一旦我点击 <a href>
链接(与下拉列表分开的组件)它不会重定向,所以链接不起作用
我该如何解决?
编辑 我正在使用 bulma.css 下拉菜单
我认为您根本不需要创建额外的挂钩。
如果您想在用户点击或离开元素时执行某些操作,您可以使用 onBlur and onFocus 回调。
如果您出于其他原因(例如单击按钮)想要对其进行模糊处理,您可以使用 reference of the anchor 并随时调用 blur()
方法。