vue 在 v-for 時給每項元素綁定事件需要用事件代理嗎?為什么?


vue本身不做事件代理(react將所有事件都委托到document上,然后進行派發)

  1. 普通html元素和在組件上掛了.native修飾符的事件。最終EventTarget.addEventListener()掛載事件
  2. 組件上的,vue組件實例上的自定義事件(不包括.native)會調用原型上的$on,$emit(包括一些其他api $off,$once等等)

vue自身沒有做事件代理,如果需要,則直接代理到父節點

<ul @click="meths">
      <li v-for="(item,key) in 10" :key="key" :data-index="key">{{item}}</li>
 </ul>


meths(e) {
      if (e.target.nodeName.toLowerCase() === 'li') {
        console.log(e.target.innerHTML)
        console.log(e.target.dataset)
      }
}

事件代理作用主要是 2 個

  1. 將事件處理程序代理到父節點,減少內存占用率
  2. 動態生成子節點時能自動綁定事件處理程序到父節點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM