1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一些關(guān)于Vue3中事件相關(guān)的小技巧,你可能還不知道

        共 4541字,需瀏覽 10分鐘

         ·

        2021-06-08 21:50

        Vue事件處理是每個Vue項目的必要方面。它用于捕獲用戶輸入,共享數(shù)據(jù)以及許多其他創(chuàng)造性方式。

        在本文中,會介紹基礎(chǔ)知識,并提供一些用于處理事件的代碼示例。它僅包含我認為最有用的技巧/方法,要深入了解Vue可以做的所有事情,請查看Vue文檔。

        基本事件處理

        使用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 }
          } 
        }

        當然,我在項目中經(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
            }
        }

        鼠標修飾符

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

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

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

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

        鍵盤修飾符

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

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

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

        1. keycodes
        2. Vue具有某些鍵的別名(entertabdeleteescspaceupdownleftright)
        <!-- 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ā)事件。修飾鍵類似于Commandshift。

        在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事件,我們可以使用一些修飾符來更改其運行方式。無論是停止傳播還是阻止默認操作,Vue都有兩個內(nèi)置的DOM事件修飾符。

        <!-- 阻止默認行為 -->
        <form @submit.prevent>

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

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

        <!-- 防止事件被多次觸發(fā) -->
        <div @close.once='handleClose'
        瀏覽 29
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            上课忘穿内裤被老师摸到高潮 | 欧美一区二区三区影视 | 伊人久久成人精品成人 | 黄色视频免费入口 | 操美女嫩逼 | 老师撩起裙子让我挺进去 | 男人舔女人b | 伦片丰满丰满午夜电影 | 乱护士肉合集乱500 | 五月天激情性爱 |