Vue自定义指令怎么获取组件实例?
我在写一个 Vue 3 的自定义指令,想在 directive 的钩子里拿到当前组件的实例(也就是 this 或 setup 里的东西),但发现 bind 或 mounted 钩子里的参数好像没有直接给出来。试过 el.__vue__ 也不行,控制台还报 undefined。
比如下面这个指令,我想在 inserted 里调用组件的一个方法:
const myDirective = {
mounted(el, binding, vnode) {
// 这里怎么拿到组件实例?vnode.component 拿到的是 VNodeComponent,但没找到公开的方法
console.log(vnode);
}
}
是不是只能通过 binding.value 传进来?还是有别的办法?
vnode.component.proxy就能拿到组件实例,和 Vue 2 的 this 是一样的:如果你的指令是写在 setup 里的,Vue 3.2+ 还有更省事的写法——用
mounted(el, binding, vnode, ...args) { args[0] },不过vnode.component.proxy最稳。