91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue的@click.native、@click.stop和@click.self怎么用

發布時間:2022-03-07 15:35:56 來源:億速云 閱讀:1261 作者:iii 欄目:web開發

這篇文章主要講解了“vue的@click.native、@click.stop和@click.self怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“vue的@click.native、@click.stop和@click.self怎么用”吧!

參考一:

vue @click.native 原生點擊事件:

1,給vue組件綁定事件時候,必須加上native ,不然不會生效(監聽根元素的原生事件,使用 .native 修飾符)

2,等同于在自組件中:

子組件內部處理click事件然后向外發送click事件:$emit("click".fn)

參考二:

在事件處理器中經常需要調用 event.preventDefault() 或 event.stopPropagation()。盡管我們在方法內可以輕松做到,不過讓方法是純粹的數據邏輯而不處理 DOM 事件細節會更好。

為了解決這個問題,Vue.js 為 v-on 提供兩個 事件修飾符:.prevent 與 .stop。你是否還記得修飾符是點號打頭的指令后綴?

<!-- 阻止單擊事件冒泡 -->

<a v-on:click.stop="doThis"></a> 

<!-- 阻止單擊事件冒泡 -->

<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重載頁面 -->

<form v-on:submit.prevent="onSubmit"></form>

<!-- 修飾符可以串聯 -->

<a v-on:click.stop.prevent="doThat">

<!-- 只有修飾符 -->

<form v-on:submit.prevent></form>

參考三:

<!-- 阻止單擊事件繼續傳播 -->

<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重載頁面 -->

<form v-on:submit.prevent="onSubmit"></form>

<!-- 修飾符可以串聯 -->

<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修飾符 -->

<form v-on:submit.prevent></form>

<!-- 添加事件監聽器時使用事件捕獲模式 -->

<!-- 即元素自身觸發的事件先在此處理,然后才交由內部元素進行處理 -->

<div v-on:click.capture="doThis">...</div>

<!-- 只當在 event.target 是當前元素自身時觸發處理函數 -->

<!-- 即事件不是從內部元素觸發的 -->

<div v-on:click.self="doThat">...</div>

使用修飾符時,順序很重要;相應的代碼會以同樣的順序產生。因此,

用 v-on:click.prevent.self 會阻止所有的點擊,

而 v-on:click.self.prevent 只會阻止對元素自身的點擊

<!-- 點擊事件將只會觸發一次 -->

<a v-on:click.once="doThis"></a>

不像其它只能對原生的 DOM 事件起作用的修飾符,.once 修飾符還能被用到自定義的組件事件上。如果你還沒有閱讀關于組件的文檔,現在大可不必擔心。

Vue 還對應 addEventListener 中的 passive 選項提供了 .passive 修飾符。

<!-- 滾動事件的默認行為 (即滾動行為) 將會立即觸發 -->

<!-- 而不會等待 &mdash;&mdash;onScroll&mdash;&mdash; 完成  -->

<!-- 這其中包含 &mdash;&mdash;event.preventDefault()&mdash;&mdash; 的情況 -->

<div v-on:scroll.passive="onScroll">...</div>

這個 .passive 修飾符尤其能夠提升移動端的性能。

不要把 .passive 和 .prevent 一起使用,因為 .prevent 將會被忽略,同時瀏覽器可能會向你展示一個警告。請記住,.passive 會告訴瀏覽器你不想阻止事件的默認行為。

參考四:

關于路由的跳轉,如果我們直接頁面使用a標簽,當然無可厚非;

但是既然是vue單頁面,那么我們就應該能使用vue自帶的組件,那就盡量去熟練它們。

頁面交互

<router-link to="/" @click.native.prevent="clickTag">

  test has native router-link 

</router-link>

//在上面那種情況下,路由會跳轉到首頁,并且控制臺也會打印出

<router-link to="/" @click="clickTag">

  test no native router-link 

</router-link>

//在上面那種情況下,路由只會跳轉到首頁,控制臺毫無反應

//ps:@mouseover、@mouseout等等事件都如此

<script>

export default {

  methods: {

    clickTag() {

      console.log('i am click in father.vue')

    }

  }

}

</script>

上面那種是vue自帶的組件情況,如果是自定義組件的話,native修飾符在我眼里,起到了節約代碼的作用。

父組件

<svg-icon icon-class="user" @click="svgClickTag"></svg-icon>

//js methods部分

svgClickTag() {

  console.log('svg-icon click in father.vue')

}

子組件:要想實現父組件內的點擊事件,子組件必須監聽點擊并觸發父組件定義的click

<svg :class="svgClass" aria-hidden="true" @click="clickSvgComponent">

  <use :xlink:href="iconName"></use>

</svg>

//js methods部分

clickSvgComponent() {

  this.$emit('click')

}

如果有了native修飾符,那就沒有子組件什么事情了

//子組件照常寫,不作任何事件綁定,刪掉methods

<svg :class="svgClass" aria-hidden="true">

  <use :xlink:href="iconName"></use>

</svg>

//父組件

<svg-icon icon-class="user" @click.native="svgClickTag"></svg-icon>

針對vue-element-ui中的el-button

<el-button type="primary" style="width: 100%;" :loading="loading" 

 @click.native.prevent="handleLogin">Sign in</el-button>

//個人認為這個庫已經這某些地方把原生的click做了處理了,因為嘗試過去掉native,照常成功

總結:native就是把組件變回原生DOM的一種方式,相當于給組件綁定原生事件。

感謝各位的閱讀,以上就是“vue的@click.native、@click.stop和@click.self怎么用”的內容了,經過本文的學習后,相信大家對vue的@click.native、@click.stop和@click.self怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察雅县| 平江县| 二连浩特市| 基隆市| 云安县| 汝南县| 晋中市| 库车县| 西和县| 汤阴县| 中阳县| 云龙县| 正镶白旗| 中卫市| 任丘市| 长葛市| 化隆| 青阳县| 资中县| 海兴县| 曲周县| 彭泽县| 岱山县| 新宁县| 宁安市| 汝州市| 当涂县| 龙南县| 墨玉县| 蕉岭县| 金乡县| 江陵县| 怀来县| 亳州市| 萨迦县| 襄樊市| 梅州市| 明水县| 临潭县| 永和县| 张北县|