Skip to content

点击事件写法踩坑

在实现 button 组件的点击事件,增加了节流模式,没有按照视频中的写法,自己的写法测试不通过:

vue
// 视频中写法
    <script>
      const handleClick = (e: MouseEvent) => emits('Ïclick', e)
      const throttleClick = throttle(handleClick, props.throttleDuration)
    </script>
  <template>
    <component 
      @click="(e:MouseEvent)=>props.useThrottle ? throttleClick(e) : handleClick(e)">
    </component>
  </template>
vue
// 我的写法
    <template>
      <component 
        @click="props.useThrottle ? throttleClick: handleClick">
      </component>
    </template>

这里乍一看好像没什么毛病,但其实第二种写法按官网说法,属于内联处理器:

  1. onclick

而第二种写法最终的结**<font style="color:rgb(33, 53, 71);">throttleClick</font>****<font style="color:rgb(33, 53, 71);">handleClick</font>**

  • inheritAttrs选项与v-bind="$attr"结合使用
    • $attrs 包含了所有父组件传递的属性,但不包括 propsclassstyle(除非你明确地将它们声明为 props)。
  • lodash 的 omit 函数,可以从一个 js 对象中去除指定键的对象