使用Vue怎么進(jìn)行事件處理

今天就跟大家聊聊有關(guān)使用Vue怎么進(jìn)行事件處理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

在錫林浩特等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站建設(shè),錫林浩特網(wǎng)站建設(shè)費(fèi)用合理。

基本事件處理

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

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

// OR

<div @click='handleClick' />

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

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

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

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

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

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

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

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

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

    return { handleUpdate }
  } 
}

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

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

    return { handleUpdate }
  } 
}

完美!

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

<HelloWorld @update='inputUpdated'/>

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

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

第一種是在模板中使用$event訪問(wèn)傳遞的值。

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

第二,使用方法來(lái)處理事件,則傳遞的值將作為第一個(gè)參數(shù)自動(dòng)傳遞給我們的方法。

<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>

對(duì)于單擊事件,我們還可以添加鼠標(biāo)事件修飾符來(lái)限制哪個(gè)鼠標(biāo)按鈕將觸發(fā)我們的事件。有三個(gè): leftrightmiddle。

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

鍵盤(pán)修飾符

我們可以聽(tīng)三個(gè)DOM鍵盤(pán)事件:

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

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

  • keycodes

  • 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)修飾符

對(duì)于某些項(xiàng)目,我們可能只想在用戶按下修飾鍵的情況下觸發(fā)事件。 修飾鍵類(lèi)似于Commandshift。

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

  • shift

  • alt

  • ctrl

  • meta (在mac上是CMD,在Windows上是Windows鍵)

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

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

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

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

事件修飾符

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

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

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

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

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

看完上述內(nèi)容,你們對(duì)使用Vue怎么進(jìn)行事件處理有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

新聞標(biāo)題:使用Vue怎么進(jìn)行事件處理
轉(zhuǎn)載來(lái)于:http://www.muchs.cn/article24/ghjjce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、外貿(mào)建站、定制開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)公司、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司