Vue 3 팁/외부 클릭 감지
6994 단어 vuejavascript
참고: 옵션 Api 요점 here
1- 다음과 같은 구성 요소 참조:
<template>
<div
ref="componentRef"
class="general-style"
>
</div>
</template>
<script setup>
import { ref } from 'vue'
const componentRef = ref()
</script>
2- 다음 컴포저블:
import {onBeforeUnmount, onMounted} from 'vue'
export default function useDetectOutsideClick(component, callback) {
if (!component) return
const listener = (event) => {
if (event.target !== component.value && event.composedPath().includes(component.value)) {
return
}
if (typeof callback === 'function') {
callback()
}
}
onMounted(() => { window.addEventListener('click', listener) })
onBeforeUnmount(() => {window.removeEventListener('click', listener)})
return {listener}
}
3- 구성 요소 내에서 사용하고 참조를 구성 가능한 매개 변수로 보냅니다.
<template>
<div
ref="componentRef"
class="general-style"
>
</div>
</template>
<script setup>
import { ref } from 'vue'
import useDetectOutsideClick from '/useDetectOutsideClick'
const componentRef = ref()
const exampleComposableText = ref('hello')
useDetectOutsideClick(componentRef, () => {
exampleComposableText.value = 'edit hello'
})
</script>
요약: ref를 선언하고 템플릿 요소를 가리키는 ref를 첫 번째 매개변수로 컴포저블에 보냅니다. 컴포저블의 두 번째 매개변수는 클릭 시 실행할 콜백입니다.
해피 코드!
Reference
이 문제에 관하여(Vue 3 팁/외부 클릭 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/erefor/vue-3-tip-detect-click-outside-4e4k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)