반응에서 범위 외부의 클릭 감지
이 자습서에는 눌렀을 때 모달을 트리거하는 버튼이 있으며 범위 외부에서 클릭이 발생할 때 모달을 닫으려고 합니다.
여기서 트릭은 세 개의 매개변수를 사용하는 사용자 정의 후크를 정의하는 것입니다.
후크 내부에서 클릭 이벤트가 발생하기를 기다리고 발생하면 클릭 영역이 지정된 참조 범위 내에 포함되어 있는지 확인하고 그렇지 않은 경우 콜백 함수가 호출됩니다.
골격은 이렇습니다.
const customHook = (ref, callback, state) => {
document.listenFor('click', e => {
if ( !ref.contains(e.target) && state ) {
callback()
}
}
}
그러나 작업 조각은 다음과 같이 보일 수 있습니다.
const [open, setOpen] = useState(false)
const modalRef = createRef(null)
const useOutsideClick = (ref, callback, when) => {
const savedCallback = useRef(callback)
useEffect(() => {
savedCallback.current = callback
})
const handler = e => {
if (ref.current && !ref.current.contains(e.target)) {
setOpen(false)
savedCallback.current()
}
}
useEffect(() => {
if (when) {
document.addEventListener('click', handler)
return () => {document.removeEventListener('click', handler)}
}
}, [when])
}
useOutsideClick(modalRef, () => {setOpen(false)}, open)
Here's a link to the sandbox.
Reference
이 문제에 관하여(반응에서 범위 외부의 클릭 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hussainsafwan/detecting-click-outside-the-scope-in-react-4ooh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)