Click怎么获取点击的组件?

<my-button @click="click">点击</my-button>

export default {
  methods: {
     click(e) {
        // 我想根据 e.currentTarget 来获取到 my-button 组件,这里怎么写?(不想用 $refs)
     }
  }
}

为什么要在父组件监听子组件的事件并访问子组件的状态,而不是在子组件里完成业务呢?

要做框架,不是做具体业务。框架要提供相关方法。

my-button组件触发click事件的时候,把组件唯一标识带上就行了,比如

this.$emit('click', this.cid)

在my-button组件内封装$emit(‘click’,this)

我隐约觉得你想错了方向。但如果你一定要这么做,可以通过自定义指令实现这个效果:

<my-button v-event:click="handleClick"/>
export default {
  directives: {
    event: {
      bind (_, {arg, value}, {componentInstance}) {
        componentInstance.$on(arg, value)
      },
    },
  },
}

代码仅供示意,请根据你的具体业务调整逻辑实现。

谢谢各位,其实click只是举个例子,不一定是click,也可能是onmouseover之类的任何事件。甚至这个html元素不是通过事件,而是通过document.querySelector()获取的。
我的需求说清楚一点就是,给定了一个HTML元素对象,怎么获取这个元素对应的组件?vue有没有提供某种快捷的获取途径?

没有。如果你能访问根组件,可以尝试通过遍历 VDOM 寻找匹配项并找到组件实例的引用