记一次vue中自定义组件native的坑

Posted clover-forever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次vue中自定义组件native的坑相关的知识,希望对你有一定的参考价值。

?

vue之.native的作用

先描述一下自己开发中遇到的问题:

技术图片

最近在构建vue页面的时候,用到了输入框的enter事件,一开始@keyup.enter并没有加.native,所以这个enter事件总是不起作用。
技术图片

但是这种情况就可以不使用.native,因为是普通组件,不是自定义的组件。

为什么或出现这种情况呢?

组件绑定事件时:

1:普通组件绑定事件不能添加.native,添加事件后无效

2:自定义事件绑定事件需要添加.native,否则事件无效

.native原理:因为在自定义组件上注册的事件触发的是组件自定义的事件,主要是给自定义的组件添加原生事件

举例子:

<template>
  <button type="button" @click="clickHandler"><slot /></button>
</template>
export default {
  name: ‘button‘,
  methods: {
    clickHandler () {
      this.$emit(‘vclick‘) // 触发 `vclick` 事件
    }
  }
}

引用Button.vue组件

<vButton @click="clickHandler" @vclick="vClickHandler">按钮</vButton>
import vButton from ‘@/components/Button‘
export default {
  components: { vButton },
  methods: {
    clickHandler () {
      alert(‘onclick‘) // 此处不会执行 因为组件中未定义 `click` 事件
    },
    vClickHandler () {
      alert(‘onvclick‘) // 触发 `vclick` 自定义事件
    }
  }
}

如果将上面的@click改成@click.native也可以实现该事件,两个都可以点击

<vButton @click.navtive="clickHandler" @vclick="vClickHandler">按钮</vButton>

.native 修饰符就是用来注册元素的原生事件而不是组件自定义事件的

原文引用:https://segmentfault.com/q/1010000011186651/a-1020000011187890
https://www.cnblogs.com/qq254980080/p/10340487.html



以上是关于记一次vue中自定义组件native的坑的主要内容,如果未能解决你的问题,请参考以下文章

记一次工作中vue中mounted请求接口返回值和vue的data域中属性不一致的后果

vue中自定义组件(插件)

3.React Native在Android中自定义Component和Module

记一次简单的vue组件单元测试

记一次JS标签的坑

记一次线上问题排查:C#可选参数的坑