Я использую следующий хук для обработки функции «щелчка», чтобы показать/скрыть раскрывающийся список:
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 и onFocus.
Если вы хотите размыть его по какой-либо другой причине (например, по нажатию кнопки), вы можете использовать ссылку якоря и вызывать blur()
метод, когда захотите.
Комментариев нет:
Отправить комментарий