zoukankan      html  css  js  c++  java
  • 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. 动态生成子节点时能自动绑定事件处理程序到父节点
  • 相关阅读:
    P1030 求先序排列 P1305 新二叉树
    spfa
    Clairewd’s message ekmp
    Cyclic Nacklace hdu3746 kmp 最小循环节
    P1233 木棍加工 dp LIS
    P1052 过河 线性dp 路径压缩
    Best Reward 拓展kmp
    Period kmp
    Substrings kmp
    Count the string kmp
  • 原文地址:https://www.cnblogs.com/chailuG/p/14680185.html
Copyright © 2011-2022 走看看