Vue에서 외부 클릭을 감지하는 방법
5464 단어 vuetutorialwebdevjavascript
이를 감지할 수 있는 재사용 가능한 구성 요소를 갖는 것은 시간을 절약하고 우리가 구축하는 것에 집중하는 데 도움이 되는 좋은 방법입니다.
먼저 구성 요소의 코드를 보여주고 아래에서 어떻게 작동하는지 설명하겠습니다. 우리는 이 구성 요소를
DetectOutsideClick.vue
라고 부를 것입니다.<template>
<div ref="root">
<slot />
</div>
</template>
<script setup>
import { onMounted, onUnmounted, ref } from 'vue'
const emit = defineEmits(['detect'])
const root = ref(null)
const onClick = (e) => {
if (e.target === root.value || root.value.contains(e.target)) {
return
}
emit('detect')
}
onMounted(() => {
document.body.addEventListener('click', onClick)
})
onUnmounted(() => {
document.body.removeEventListener('click', onClick)
})
</script>
사용 방법에 대한 예는 다음과 같습니다.
<DetectOutsideClick @detect="onOutsideClick">
<div class="popup">A popup component</div>
</DetectOutsideClick>
어떻게 작동합니까?
여기서 아이디어는 페이지의 모든 클릭을 듣는 것입니다. 클릭한 요소가 내부 요소
<DetectOutsideClick>
또는 그 하위 요소가 아닌 경우 외부 클릭입니다.다음을 사용하여 페이지의 모든 클릭을 듣습니다.
document.body.addEventListener('click', (e) => {})
다음은 동일한 요소인지 하위 요소인지 확인하는 방법입니다.
if (e.target === root.value || root.value.contains(e.target))
이 경우 우리
return
는 외부 클릭이 아니기 때문입니다. 그러나 외부 클릭인 경우 detect
라는 이벤트를 발생시킵니다.그게 다야!
Reference
이 문제에 관하여(Vue에서 외부 클릭을 감지하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tahazsh/how-to-detect-outside-clicks-in-vue-gdj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)