<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          「百毒不侵」面試官最喜歡問的14種Vue修飾符

          共 7075字,需瀏覽 15分鐘

           ·

          2022-01-02 15:00

          作者:Sunshine_Lin

          簡(jiǎn)介:「前端之神」的號(hào)主江湖人稱林三心,現(xiàn)已有100+篇原創(chuàng)文章,全網(wǎng)粉絲高達(dá)1w+,面試過超過100+個(gè)前端程序員,全網(wǎng)獲贊2w+,全網(wǎng)閱讀量播放量超過60w,更是B站「面試進(jìn)階成為大佬」系列視頻的Up主。喜歡分享Vue,React,Typescript等高級(jí)前端知識(shí)。

          來源:SegmentFault  思否社區(qū)


          前言



          大家好,我是林三心,眾所周知,修飾符也是Vue的重要組成成分之一,利用好修飾符可以大大地提高開發(fā)的效率,接下來給大家介紹一下面試官最喜歡問的14種Vue修飾符。


          1.lazy



          lazy修飾符作用是,改變輸入框的值時(shí)value不會(huì)改變,當(dāng)光標(biāo)離開輸入框時(shí),v-model綁定的值value才會(huì)改變。


          <input type="text" v-model.lazy="value">
          <div>{{value}}</div>

          data() {
                  return {
                      value: '222'
                  }
              }



          2.trim



          trim修飾符的作用類似于JavaScript中的trim()方法,作用是把v-model綁定的值的首尾空格給過濾掉。


          <input type="text" v-model.trim="value">
          <div>{{value}}</div>

          data() {
                  return {
                      value: '222'
                  }
              }



          3.number



          number修飾符的作用是將值轉(zhuǎn)成數(shù)字,但是先輸入字符串和先輸入數(shù)字,是兩種情況。


          <input type="text" v-model.number="value">
          <div>{{value}}</div>

          data() {
                  return {
                      value: '222'
                  }
              }


          先輸入數(shù)字的話,只取前面數(shù)字部分



          先輸入字母的話,number修飾符無效



          4.stop



          stop修飾符的作用是阻止冒泡


          <div @click="clickEvent(2)" style="width:300px;height:100px;background:red">
              <button @click.stop="clickEvent(1)">點(diǎn)擊</button>
          </div>

          methods: {
                  clickEvent(num) {
                      不加 stop 點(diǎn)擊按鈕輸出 1 2
                      加了 stop 點(diǎn)擊按鈕輸出 1
                      console.log(num)
                  }
              }


          5.capture



          事件默認(rèn)是由里往外冒泡,capture修飾符的作用是反過來,由外網(wǎng)內(nèi)捕獲


          <div @click.capture="clickEvent(2)" style="width:300px;height:100px;background:red">
              <button @click="clickEvent(1)">點(diǎn)擊</button>
          </div>

          methods: {
                  clickEvent(num) {
                      不加 capture 點(diǎn)擊按鈕輸出 1 2
                      加了 capture 點(diǎn)擊按鈕輸出 2 1
                      console.log(num)
                  }
              }


          6.self



          self修飾符作用是,只有點(diǎn)擊事件綁定的本身才會(huì)觸發(fā)事件


          <div @click.self="clickEvent(2)" style="width:300px;height:100px;background:red">
              <button @click="clickEvent(1)">點(diǎn)擊</button>
          </div>

          methods: {
                  clickEvent(num) {
                      不加 self 點(diǎn)擊按鈕輸出 1 2
                      加了 self 點(diǎn)擊按鈕輸出 1 點(diǎn)擊div才會(huì)輸出 2
                      console.log(num)
                  }
              }



          7.once



          once修飾符的作用是,事件只執(zhí)行一次


          <div @click.once="clickEvent(2)" style="width:300px;height:100px;background:red">
              <button @click="clickEvent(1)">點(diǎn)擊</button>
          </div>

          methods: {
                  clickEvent(num) {
                      不加 once 多次點(diǎn)擊按鈕輸出 1
                      加了 once 多次點(diǎn)擊按鈕只會(huì)輸出一次 1 
                      console.log(num)
                  }
              }



          8.prevent



          prevent修飾符的作用是阻止默認(rèn)事件(例如a標(biāo)簽的跳轉(zhuǎn))


          <a href="#" @click.prevent="clickEvent(1)">點(diǎn)我</a>

          methods: {
                  clickEvent(num) {
                      不加 prevent 點(diǎn)擊a標(biāo)簽 先跳轉(zhuǎn)然后輸出 1
                      加了 prevent 點(diǎn)擊a標(biāo)簽 不會(huì)跳轉(zhuǎn)只會(huì)輸出 1
                      console.log(num)
                  }
              }



          9.native



          native修飾符是加在自定義組件的事件上,保證事件能執(zhí)行


          執(zhí)行不了
          <My-component @click="shout(3)"></My-component>

          可以執(zhí)行
          <My-component @click.native="shout(3)"></My-component>


          10.left,right,middle



          這三個(gè)修飾符是鼠標(biāo)的左中右按鍵觸發(fā)的事件


          <button @click.middle="clickEvent(1)"  @click.left="clickEvent(2)"  @click.right="clickEvent(3)">點(diǎn)我</button>

          methods: {
                  點(diǎn)擊中鍵輸出1
                  點(diǎn)擊左鍵輸出2
                  點(diǎn)擊右鍵輸出3
                  clickEvent(num) {
                      console.log(num)
                  }
              }


          11.passive



          當(dāng)我們?cè)诒O(jiān)聽元素滾動(dòng)事件的時(shí)候,會(huì)一直觸發(fā)onscroll事件,在pc端是沒啥問題的,但是在移動(dòng)端,會(huì)讓我們的網(wǎng)頁變卡,因此我們使用這個(gè)修飾符的時(shí)候,相當(dāng)于給onscroll事件整了一個(gè).lazy修飾符


          <div @scroll.passive="onScroll">...</div>


          12.camel



          不加camel viewBox會(huì)被識(shí)別成viewbox
          <svg :viewBox="viewBox"></svg>

          加了canmel viewBox才會(huì)被識(shí)別成viewBox
          <svg :viewBox.camel="viewBox"></svg>


          13.sync



          當(dāng)父組件傳值進(jìn)子組件,子組件想要改變這個(gè)值時(shí),可以這么做


          父組件里
          <children :foo="bar" @update:foo="val => bar = val"></children>

          子組件里
          this.$emit('update:foo', newValue)


          sync修飾符的作用就是,可以簡(jiǎn)寫:


          父組件里
          <children :foo.sync="bar"></children>

          子組件里
          this.$emit('update:foo', newValue)


          14.keyCode



          當(dāng)我們這么寫事件的時(shí)候,無論按什么按鈕都會(huì)觸發(fā)事件


          <input type="text" @keyup="shout(4)">


          那么想要限制成某個(gè)按鍵觸發(fā)怎么辦?這時(shí)候keyCode修飾符就派上用場(chǎng)了


          <input type="text" @keyup.keyCode="shout(4)">


          Vue提供的keyCode:


          //普通鍵
          .enter 
          .tab
          .delete //(捕獲“刪除”和“退格”鍵)
          .space
          .esc
          .up
          .down
          .left
          .right
          //系統(tǒng)修飾鍵
          .ctrl
          .alt
          .meta
          .shift


          例如(具體的鍵碼請(qǐng)看鍵碼對(duì)應(yīng)表


          按 ctrl 才會(huì)觸發(fā)
          <input type="text" @keyup.ctrl="shout(4)">

          也可以鼠標(biāo)事件+按鍵
          <input type="text" @mousedown.ctrl.="shout(4)">

          可以多按鍵觸發(fā) 例如 ctrl + 67
          <input type="text" @keyup.ctrl.67="shout(4)">



          點(diǎn)擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開更多互動(dòng)和交流,掃描下方”二維碼“或在“公眾號(hào)后臺(tái)回復(fù)“ 入群 ”即可加入我們的技術(shù)交流群,收獲更多的技術(shù)文章~

          - END -


          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国一级毛片 | 色天堂综合在线 | 影音先锋成人资源站 | 国产无码黄色 | 18禁麻豆 |