目錄
Use the @ syntax with .native modifier (Vue 2 only)
In Vue 3: .native modifier is removed
Explicitly emit events from the child component
首頁 web前端 Vue.js 如何在vue.js組件上收聽本機DOM事件?

如何在vue.js組件上收聽本機DOM事件?

Sep 16, 2025 am 08:04 AM

在Vue 3中,原生DOM事件默認直接綁定到組件根元素,無需.native修飾符;若組件為單根元素,可直接使用@event監聽,如@click;對於多根節點或需顯式控制時,應通過$emit或defineEmits定義並觸發自定義事件,以保持跨版本兼容性與清晰的事件接口。

How to listen to native DOM events on a Vue.js component?

To listen to native DOM events on a Vue.js component, you need to understand that by default, Vue only propagates events emitted with $emit when using v-on (the @ syntax). Native DOM events like click , input , or keydown don't automatically bubble up from the root element of a child component unless you explicitly forward them.

Use the @ syntax with .native modifier (Vue 2 only)

In Vue 2, you can listen to native events on a component's root element using the .native modifier:

This works because Vue 2 supports the .native modifier to attach listeners to the component's root element.

In Vue 3: .native modifier is removed

In Vue 3, the .native modifier was removed. All v-on listeners are now attached to the component's root element by default, unless the component has multiple root nodes (fragments).

If your component has a single root element, native events like click can be listened to directly:

This will attach the click listener to the root element of my-component .

Explicitly emit events from the child component

A cleaner and more predictable approach is to have the child component emit custom events in response to native events:

This keeps the interface explicit and works consistently across Vue 2 and 3.

Using defineEmits and defineProps (Vue 3 with

In Vue 3's , declare emitted events:

Then bind it in the template as before.

Basically, in Vue 3, native events are listened on the root element by default. No extra syntax is needed. For more control or multi-root components, emit custom events explicitly from the child.

以上是如何在vue.js組件上收聽本機DOM事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

如何為vue.js中的每個路線動態設置頁面標題? 如何為vue.js中的每個路線動態設置頁面標題? Sep 21, 2025 am 03:19 AM

答案:在Vue.js中可通過VueRouter的meta字段和導航守衛動態設置頁面標題。 1.為每個路由定義meta.title,在router.afterEach中更新document.title;2.若標題依賴異步數據,可在組件內獲取後更新;3.Vue3可創建usePageTitle組合式函數復用邏輯;4.對SEO敏感場景應使用@vueuse/head等庫支持SSR。

如何在VUE路由器中使用路由參數? 如何在VUE路由器中使用路由參數? Sep 16, 2025 am 07:20 AM

在VueRouter中使用路由參數的核心是通過動態片段捕獲URL值。 1.定義帶參數的路由時,在路徑中使用冒號:表示動態參數,如/user/:id;2.在組件中可通過$route.params獲取參數,Vue3中可用useRoute;3.可選參數加?,通配符用*捕獲未匹配路徑;4.跳轉可使用router-link或編程式導航並顯式傳遞params。

vue.set(或this。$ set)和直接分配有什麼區別? vue.set(或this。$ set)和直接分配有什麼區別? Sep 15, 2025 am 01:26 AM

在Vue2中,直接賦值無法觸發響應式更新,而Vue.set或this.$set能確保新增屬性或數組項被正確偵測並更新視圖;2.Vue3使用Proxy實現了全面的響應式監聽,支持動態添加屬性和數組索引修改,因此直接賦值即可觸發更新,無需使用$set;3.儘管$set在Vue3中仍存在以兼容舊代碼,但已被棄用,推薦優先使用直接賦值或替換整個對象/數組的方式以保證響應性,該方案在兩個版本中均有效。

如何在VUE組件上創建自定義V模型? 如何在VUE組件上創建自定義V模型? Sep 21, 2025 am 01:08 AM

在Vue3中創建自定義v-model需定義modelValue屬性並emitupdate:modelValue事件;2.可通過v-model:title指定自定義prop名稱;3.Vue2默認使用value和input事件,但可通過model選項改為modelValue和update:modelValue以兼容Vue3;4.始終在Vue3中聲明emits以確保清晰性和驗證;5.避免直接修改prop,應通過事件觸發更新,從而使組件像原生輸入一樣支持雙向綁定。

如何在vue.js組件上收聽本機DOM事件? 如何在vue.js組件上收聽本機DOM事件? Sep 16, 2025 am 08:04 AM

在Vue3中,原生DOM事件默認直接綁定到組件根元素,無需.native修飾符;若組件為單根元素,可直接使用@event監聽,如@click;對於多根節點或需顯式控制時,應通過$emit或defineEmits定義並觸發自定義事件,以保持跨版本兼容性與清晰的事件接口。

如何處理VUE 3組成API中的組件生命週期? 如何處理VUE 3組成API中的組件生命週期? Sep 17, 2025 am 07:33 AM

在Vue3的CompositionAPI中,生命週期鉤子通過onX函數使用,答案是:1.導入onMounted、onUpdated、onUnmounted等函數並在setup()中調用;2.setup()替代created,無需單獨定義;3.可在組合式函數中封裝生命週期邏輯以實現復用;4.鉤子必須同步調用且可多次註冊;5.常見用途包括掛載時獲取數據和卸載時清理資源,從而提升代碼組織性和可維護性。

如何使用Vite在Vue.js項目中處理圖像和字體之類的資產? 如何使用Vite在Vue.js項目中處理圖像和字體之類的資產? Sep 20, 2025 am 02:45 AM

Placestaticassetslikeimagesandfontsinthepublicdirectoryfordirectaccessorinsrc/assetsforbundledprocessing.2.ImportimagesincomponentsusingscriptsetupforautomaticURLresolution.3.Definecustomfontsvia@font-faceinCSSwithaliasedpaths,ensuringViteresolvesthe

如何使用VUE CLI或VITE for Vue.js建立一個新項目? 如何使用VUE CLI或VITE for Vue.js建立一個新項目? Sep 16, 2025 am 06:45 AM

使用VueCLI或Vite均可快速搭建Vue.js項目。 2.VueCLI基於webpack,功能豐富,適合需要深度插件集成的項目。 3.Vite啟動更快,支持熱更新,推薦用於新項目。 4.多數新項目選擇Vite,因其性能優越且配置簡潔。

See all articles