1. const { proxy: vm } = getCurrentInstance()

1. const { proxy: vm } = getCurrentInstance()

  • getCurrentInstance() 是 Vue 3 中的一个 API,用于在组件的 setup 函数中获取当前组件实例。

  • getCurrentInstance() 返回的对象包含 proxy 属性,这是组件实例的代理对象,代表组件的上下文,可以访问组件的属性、方法等。

    等价代码:

    
    

    javascript

    复制编辑

    const instance = getCurrentInstance(); const vm = instance.proxy;

    vm 是什么:

    • vm 类似于 Vue 2 中的 this,但在 Composition API 中,setup 函数没有 this,所以需要通过 getCurrentInstance().proxy 获取。

2. provide('$sopRoot', vm)

  • provide 是 Vue 3 中的依赖注入 API,用于在祖先组件中提供数据,让后代组件可以通过 inject 获取。

  • provide('$sopRoot', vm) 的含义是将 vm(当前组件的实例代理对象)通过键名 $sopRoot 注入到 Vue 的依赖系统中。

    使用场景:

    • 后代组件可以通过 inject('$sopRoot') 来获取当前组件实例 vm,从而访问或操作它的属性和方法。

总结

这段代码的主要作用是:

  1. 获取当前组件的实例代理对象 vm
  2. 使用 providevm 注入到依赖系统中,供子组件访问。

示例场景

比如在一个复杂的应用中,你希望让所有子组件都能访问到某个根组件的实例,可以这样做:


javascript

复制编辑

// 根组件 import { getCurrentInstance, provide } from 'vue'; export default { setup() { const { proxy: vm } = getCurrentInstance(); provide('$sopRoot', vm); }, };

在子组件中:


javascript

复制编辑

import { inject } from 'vue'; export default { setup() { const sopRoot = inject('$sopRoot'); console.log(sopRoot); // 可以访问根组件的属性和方法 }, };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值