欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

@click.native和@click的區(qū)別及說明

 更新時(shí)間:2024年08月16日 17:03:23   作者:轉(zhuǎn)角處的湯姆  
這篇文章主要介紹了@click.native和@click的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@click.native和@click的區(qū)別

@click 是 Vue.js 框架提供的模板語(yǔ)法,用于綁定 DOM 元素的 click 事件,等價(jià)于 v-on:click。它只能監(jiān)聽 Vue 組件內(nèi)部元素的 click 事件,并且會(huì)阻止默認(rèn)行為和事件冒泡。

@click.native 則是 Vue.js 框架提供的修飾符之一,用于監(jiān)聽 DOM 元素的原生 click 事件,不會(huì)對(duì)默認(rèn)行為和事件冒泡進(jìn)行任何處理。相比于 @click,它可以監(jiān)聽任何 DOM 元素的 click 事件,包括組件內(nèi)嵌套的子組件和子元素。

舉個(gè)例子:

如果你想監(jiān)聽一個(gè)來自于 slot 內(nèi)的元素的 click 事件,可以使用 @click.native 來綁定該事件。

使用@click點(diǎn)擊事件不生效、使用@click.native才生效是為啥?

在引入 better-scroll 組件中使用 @click 事件會(huì)失效,需要在 better-scroll 的配置項(xiàng)中設(shè)置 click: true,才能使 @click 事件生效。這是因?yàn)?better-scroll 會(huì)阻止默認(rèn)的瀏覽器事件,并將其轉(zhuǎn)化為自定義的滾動(dòng)事件,從而導(dǎo)致原生的 click 事件無(wú)法響應(yīng)。

@click.native 可以監(jiān)聽 DOM 元素的原生 click 事件,不會(huì)經(jīng)過 better-scroll 的處理,因此能夠正常響應(yīng)用戶的點(diǎn)擊操作。

綜上所述,如果在使用 better-scroll 或其他可能影響原生 click 事件響應(yīng)的組件時(shí),建議使用 @click.native 來綁定 click 事件,從而避免事件失效的問題。

@click與@click.native,及其vue事件機(jī)制的分析

vue維護(hù)了自己的事件機(jī)制。

所以就有了原生DOM事件和自定義事件的區(qū)別,比如下面這段官網(wǎng)原話。

用在普通元素上時(shí),只能監(jiān)聽原生 DOM 事件。用在自定義元素組件上時(shí),也可以監(jiān)聽子組件觸發(fā)的自定義事件。

本文也將圍繞這一句話展開。

想必大家都會(huì)在自定義組件中自定義事件。

<my-component v-on:my-event="doSomething"></my-component>

那么如何給自定義組價(jià)添加原生事件呢,其實(shí)想一想理論上是不可行的,因?yàn)樽远x組件最終不會(huì)渲染到頁(yè)面上,怎么加?

所以Vue給自定義組件綁定原生事件的做法是:把原生事件綁定到組件的根節(jié)點(diǎn),根節(jié)點(diǎn)就只有一個(gè)嘛…

但是你要告訴vue,當(dāng)前要給原生節(jié)點(diǎn)綁定DOM事件,而不是自定義事件。

如下:

<!-- 以下無(wú)論你怎么點(diǎn)擊hello都不會(huì)觸發(fā)父組件的事件的 -->
<!-- 除非加上@click="$emit('click')",也就是觸發(fā)自定義事件 -->
<template>
  <div class="hello">
    hello
  </div>
</template>

<template>
  <div id="app">
    <HelloWorld msg="Welcome to Your Vue.js App" @click="clickEvent"/>
  </div>
</template>
<script>
  methods: {
    clickEvent(){
      console.log('事件觸發(fā)')
    }
  }
</script>

或者直接簡(jiǎn)單的使用.native。

<HelloWorld msg="Welcome to Your Vue.js App" @click.native="clickEvent"/>

好了,你已經(jīng)了解了.native的用途。接下來,再說一說原生節(jié)點(diǎn)綁定自定義DOM事件。

直接看代碼如下:

<template>
  <div id="app" @customizedEvent="myEvent">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
  name: 'App',
  components: {
    HelloWorld
  },
  mounted() {
    const app = document.getElementById('app');

    const event = document.createEvent('HTMLEvents');
    event.initEvent('customizedEvent', false, true);
    app.dispatchEvent(event);
  },
  methods: {
    myEvent() {
      console.log('customizedEvent')
    }
  }
}
</script>

我們通過原生的事件派發(fā)機(jī)制可以觸發(fā)綁定到原生元素的事件。

說明vue幫你做的事情其實(shí)是

app.addEventListener('customizedEvent', myEvent, false);

也就是說并非走的組件中的自定義事件,而是原生的DOM事件。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中的計(jì)算屬性傳參

    vue中的計(jì)算屬性傳參

    這篇文章主要介紹了vue中的計(jì)算屬性傳參,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue.js綁定事件監(jiān)聽器示例【基于v-on事件綁定】

    vue.js綁定事件監(jiān)聽器示例【基于v-on事件綁定】

    這篇文章主要介紹了vue.js綁定事件監(jiān)聽器的方法,結(jié)合實(shí)例形式分析了vue.js基于v-on事件綁定響應(yīng)鼠標(biāo)點(diǎn)擊相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • vue element-ui里的table中表頭與表格出現(xiàn)錯(cuò)位的解決

    vue element-ui里的table中表頭與表格出現(xiàn)錯(cuò)位的解決

    這篇文章主要介紹了vue element-ui里的table中表頭與表格出現(xiàn)錯(cuò)位的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Element-Plus之el-col與el-row快速布局

    Element-Plus之el-col與el-row快速布局

    el-col是el-row的子元素,下面這篇文章主要給大家介紹了關(guān)于Element-Plus之el-col與el-row快速布局的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Vue 2.0雙向綁定原理的實(shí)現(xiàn)方法

    Vue 2.0雙向綁定原理的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Vue 2.0雙向綁定原理的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 利用SpringMVC過濾器解決vue跨域請(qǐng)求的問題

    利用SpringMVC過濾器解決vue跨域請(qǐng)求的問題

    下面小編就為大家分享一篇利用SpringMVC過濾器解決vue跨域請(qǐng)求的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue如何實(shí)現(xiàn)級(jí)聯(lián)選擇器功能

    vue如何實(shí)現(xiàn)級(jí)聯(lián)選擇器功能

    這篇文章主要介紹了vue如何實(shí)現(xiàn)級(jí)聯(lián)選擇器功能問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Django+vue跨域問題解決的詳細(xì)步驟

    Django+vue跨域問題解決的詳細(xì)步驟

    這篇文章主要介紹了Django+vue跨域問題解決的詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Vite多環(huán)境配置項(xiàng)目高定制化能力詳解

    Vite多環(huán)境配置項(xiàng)目高定制化能力詳解

    這篇文章主要為大家介紹了Vite多環(huán)境配置項(xiàng)目高定制化能力詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue使用pinia管理數(shù)據(jù)pinia持久化存儲(chǔ)問題

    Vue使用pinia管理數(shù)據(jù)pinia持久化存儲(chǔ)問題

    這篇文章主要介紹了Vue使用pinia管理數(shù)據(jù)pinia持久化存儲(chǔ)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論