GOOGLE ADS

пятница, 29 апреля 2022 г.

Хук React (Next.js) useOutsideClick отменяет мои ссылки

Я использую следующий хук для обработки функции «щелчка», чтобы показать/скрыть раскрывающийся список:

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()метод, когда захотите.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...