You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3如何查看所有全局注册组件?this.$options.components为空

为什么 this.$options.components 返回空对象

Vue 3 中组件实例的 this.$options.components 仅会收集当前组件局部注册的组件,通过 app.component() 注册的全局组件不会挂载到这个属性下,因此打印得到空对象是框架的默认行为,不是组件注册失效。

查看所有全局注册组件的实现方式

全局注册的组件统一存储在应用实例的上下文中,可通过以下两种方式获取:

  • 组件内部访问
    在组件的生命周期钩子、方法中,直接通过实例属性读取全局组件集合即可:
    mounted() {
      // 该对象包含所有全局注册的组件,键为注册时的组件名,值为组件配置对象
      const allGlobalComponents = this.$.appContext.components
      console.log(allGlobalComponents)
      // 你注册的UserTextInput可通过 allGlobalComponents.UserTextInput 直接获取
    }
    
  • 入口文件处访问
    如果你在 main.js 等应用入口持有创建好的app实例,也可以直接读取上下文拿到全局组件列表:
    import UserTextInput from "./components/defaultComponents/UserTextInput.vue";
    
    const app = createApp(App);
    app.component('UserTextInput', UserTextInput);
    // 打印所有全局注册组件
    console.log(app._context.components)
    app.mount('#app');
    

提示:app._context 属于框架内部属性,跨版本使用时建议做兼容性校验,日常业务开发优先使用组件内 this.$.appContext.components 的访问方式,该路径在Vue 3全版本中稳定可用。

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:51:35