最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3 之 Vue 事件處理指南

 更新時間:2021年09月13日 09:43:58   作者:前端小智  
Vue事件處理是每個Vue項目的必要方面。 它用于捕獲用戶輸入,共享數(shù)據(jù)以及許多其他創(chuàng)造性方式。在本文中,會介紹基礎(chǔ)知識,并提供一些用于處理事件的代碼示例。需要的小伙伴可以參考下面文章的具體內(nèi)容

一、基本事件處理

使用v-on指令(簡稱@),我們可以監(jiān)聽DOM事件并運行處理程序方法或內(nèi)聯(lián)Javascript。

// v-on 指令
<div v-on:click='handleClick' />

// OR

<div @click='handleClick' />

二、向父組件發(fā)出自定義事件

任何Web框架中的常見用例都是希望子組件能夠向其父組件發(fā)出事件,這也是雙向數(shù)據(jù)綁定原理。

常見一個示例是將數(shù)據(jù)從 input組件發(fā)送到父表單。

根據(jù)我們使用的是Options API還是Composition API,發(fā)出事件的語法是不同的。

Options API 中,我們可以簡單地調(diào)用this.$emit(eventName, payload) ,示例如下:

export default {
  methods: {
    handleUpdate: () => {
      this.$emit('update', 'Hello World')
    }
  }
}


但是,Composition API 使用方式與此不同。 需要在 Vue3 提供的 setup方法使用emit方法。

只要導(dǎo)入context對象,就可以使用與Options API相同的參數(shù)調(diào)用emit。

export default {
  setup (props, context) {
    const handleUpdate = () => {
      context.emit('update', 'Hello World')
    }

    return { handleUpdate }
  } 
}

當(dāng)然,我在項目中經(jīng)常使用解構(gòu)的方式來使用:

export default {
  setup (props, { emit }) {
    const handleUpdate = () => {
      emit('update', 'Hello World')
    }

    return { handleUpdate }
  } 
}

完美!

無論我們使用Options 還是 Composition API,父組監(jiān)聽的方式都是一樣的。

<HelloWorld @update='inputUpdated'/>


首先,我們可以在模板中使用$ event訪問傳遞的值。

如果在組件 emit 出去方法有傳遞值,我們可以通過兩種不同的方式捕獲它,這取決于我們是使用內(nèi)聯(lián)還是使用方法。

第一種:是在模板中使用$event訪問傳遞的值。

<HelloWorld @update='inputUpdated($event)'/>


第二種:使用方法來處理事件,則傳遞的值將作為第一個參數(shù)自動傳遞給我們的方法。

<HelloWorld @update='inputUpdated'/>

// ...

methods: {
    inputUpdated: (value) => {
      console.log(value) // WORKS TOO
    }
}

三、鼠標(biāo)修飾符

下面是我們可以在v-on指令中捕獲的主要DOM鼠標(biāo)事件列表:

<div 
  @mousedown='handleEvent'
  @mouseup='handleEvent'
  @click='handleEvent'
  @dblclick='handleEvent'
  @mousemove='handleEvent'
  @mouseover='handleEvent'
  @mousewheel='handleEvent'
  @mouseout='handleEvent'
>
Interact with Me!
</div>


對于單擊事件,我們還可以添加鼠標(biāo)事件修飾符來限制哪個鼠標(biāo)按鈕將觸發(fā)我們的事件。有三個: left,right middle

<!-- 這只會觸發(fā)鼠標(biāo)左鍵 -->
<div @mousedown.left='handleLeftClick'> Left </div>

四、鍵盤修飾符

我們可以聽三個DOM鍵盤事件:

<input
   type='text'
   placeholder='Type something'
   @keypress='handleKeyPressed'
   @keydown='handleKeyDown'
   @keyup='handleKeyUp'
/>


通常,我們想檢測某個鍵上的這些事件,有兩種方法可以執(zhí)行此操作。

  1. keycodes
  2. Vue具有某些鍵的別名(enter, tab, delete, esc, space, up, down, left, right)
<!-- Trigger even when enter is released -->
<input
   type='text'
   placeholder='Type something'
   @keyup.enter='handleEnter'
/>

<!-- OR -->
<input
   type='text'
   placeholder='Type something'
   @keyup.13='handleEnter'
/>

五、系統(tǒng)修飾符

對于某些項目,我們可能只想在用戶按下修飾鍵的情況下觸發(fā)事件。 修飾鍵類似于Command或shift。

在Vue中,有四個系統(tǒng)修飾符。

  1. shift
  2. alt
  3. ctrl
  4. meta (在mac上是CMD,在Windows上是Windows鍵)

這對于在Vue應(yīng)用程序中創(chuàng)建諸如自定義鍵盤快捷鍵之類的功能非常有用。

<!-- 自定義快捷方式,楊使用Shift + 8 創(chuàng)建列表 -->
<input
   type='text'
   placeholder='Type something'
   @keyup.shift.56='createList'
/>


Vue文檔中,還有一個exact的修飾符,以確保僅在按下我們指定的鍵且沒有其他鍵的情況下才觸發(fā)事件。

<!-- 自定義快捷方式,只有Shift + 8 這兩個按下時才會創(chuàng)建列表-->
<input
   type='text'
   placeholder='Type something'
   @keyup.shift.56.exact='createList'
/>

六、事件修飾符

對于所有DOM事件,我們可以使用一些修飾符來更改其運行方式。 無論是停止傳播還是阻止默認(rèn)操作,Vue都有兩個內(nèi)置的DOM事件修飾符。

<!-- 阻止默認(rèn)行為 -->
<form @submit.prevent>

<!-- 阻止冒泡 -->
<form @submit.stop='submitForm'>

<!-- 阻止默認(rèn)行為和冒泡 -->
<form @submit.stop.prevent='submitForm'>

<!-- 防止事件被多次觸發(fā) -->
<div @close.once='handleClose'> 

代碼部署后可能存在的BUG沒法實時知道,事后為了解決這些BUG,花了大量的時間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個好用的BUG監(jiān)控工具Fundebug

到此這篇關(guān)于Vue3 之 Vue 事件處理指南的文章就介紹到這了,更多相關(guān)Vue 事件處理指南內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VUE v-for循環(huán)中每個item節(jié)點動態(tài)綁定不同函數(shù)的實例

    VUE v-for循環(huán)中每個item節(jié)點動態(tài)綁定不同函數(shù)的實例

    今天小編就為大家分享一篇VUE v-for循環(huán)中每個item節(jié)點動態(tài)綁定不同函數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 解決VUE打包后與nginx代理出現(xiàn)加載速度超級慢的問題

    解決VUE打包后與nginx代理出現(xiàn)加載速度超級慢的問題

    這篇文章主要介紹了解決VUE打包后與nginx代理出現(xiàn)加載速度超級慢的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • vue測試環(huán)境打包與生產(chǎn)環(huán)境打包文件數(shù)量不一致解決方案

    vue測試環(huán)境打包與生產(chǎn)環(huán)境打包文件數(shù)量不一致解決方案

    這篇文章主要為大家介紹了vue測試環(huán)境打包與生產(chǎn)環(huán)境打包文件數(shù)量不一致的解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Vue關(guān)閉eslint檢測的多種方式

    Vue關(guān)閉eslint檢測的多種方式

    在開發(fā)項目時遇到由于選擇了eslint導(dǎo)致的嚴(yán)格錯誤提示,如多個空格和多行報錯,解決方案包括在webpack.base.conf.js中進(jìn)行配置修改,創(chuàng)建項目時避免選擇eslint,本文給大家介紹了Vue關(guān)閉eslint檢測的多種方法,需要的朋友可以參考下
    2025-03-03
  • vue全局?jǐn)?shù)據(jù)管理示例詳解

    vue全局?jǐn)?shù)據(jù)管理示例詳解

    這篇文章主要為大家介紹了vue全局?jǐn)?shù)據(jù)管理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 手寫Vue內(nèi)置組件component的實現(xiàn)示例

    手寫Vue內(nèi)置組件component的實現(xiàn)示例

    本文主要介紹了手寫Vue內(nèi)置組件component的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Vue實現(xiàn)PC端分辨率自適應(yīng)的示例代碼

    Vue實現(xiàn)PC端分辨率自適應(yīng)的示例代碼

    本文主要介紹了Vue實現(xiàn)PC端分辨率自適應(yīng)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue文件如何代替?zhèn)鹘y(tǒng)的HTML文件

    Vue文件如何代替?zhèn)鹘y(tǒng)的HTML文件

    隨著前端工程化的不斷推進(jìn),傳統(tǒng)的HTML、CSS、JavaScript三者分離的開發(fā)模式逐漸顯露出一些不足之處,尤其是在構(gòu)建復(fù)雜的單頁應(yīng)用(SPA)時,Vue.js作為一個現(xiàn)代化的前端框架,提供了多種工具和技術(shù)來簡化開發(fā)流程,本文將探討.vue文件是如何替代傳統(tǒng)HTML文件的角色
    2024-10-10
  • vue?cli3配置image-webpack-loader方式

    vue?cli3配置image-webpack-loader方式

    這篇文章主要介紹了vue?cli3配置image-webpack-loader方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue中filter使用及根據(jù)id刪除數(shù)組元素方式

    Vue中filter使用及根據(jù)id刪除數(shù)組元素方式

    這篇文章主要介紹了Vue中filter使用及根據(jù)id刪除數(shù)組元素方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

金山区| 新晃| 诏安县| 民丰县| 靖远县| 淳安县| 南郑县| 荣成市| 沭阳县| 金川县| 卢龙县| 孟津县| 施甸县| 和平区| 新余市| 福建省| 武定县| 普兰店市| 正定县| 莲花县| 樟树市| 乳山市| 洪湖市| 汉中市| 温宿县| 邛崃市| 成武县| 宜宾市| 自贡市| 邓州市| 逊克县| 启东市| 西乡县| 吉首市| 自贡市| 定远县| 永平县| 无棣县| 郑州市| 青川县| 花莲市|