首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问Vue3全局组件

访问Vue3全局组件
EN

Stack Overflow用户
提问于 2021-02-19 16:02:03
回答 1查看 455关注 0票数 3

所以我正在尝试将这个Vue2项目转换为Vue3(typescript)。

它全局注册组件并访问它们以匹配我存储中的值,但是当尝试在Vue3中实现这一点时,组件仍然是未定义的。

代码语言:javascript
复制
import getComponentTypeForContent from "../api/getComponentTypeForContent";
import { mapState } from "vuex";
import { defineComponent } from "vue";

export default defineComponent({
  name: "PageComponentSelector",
  beforeCreate: function () {
    console.log("CREATED PAGECOMPONENTSELECTOR");
  },
  computed: mapState({
    model: (state) => state.epiDataModel.model,
    modelLoaded: (state) => state.epiDataModel.modelLoaded,
  }),
  methods: {
    getComponentTypeForPage(model) {
      // this.$options.components will contain all globally registered components from main.js
      return getComponentTypeForContent(model, this.$options.components);
      // this.$options.components fetches all components for vue2 app
    },
  },
});

并像这样注册组件:

代码语言:javascript
复制
//Pages
import LoginPage from "./components/pages/Login.vue";

const appAdv = createApp(App);

//Register components
appAdv.component("LoginPage", LoginPage);

appAdv.use(store).use(router).mount("#appAdv");

我找不到(或者搜索不好)如何在vue3中做这件事或类似的事情,所以我来到这里,希望有人能帮助我

EN

回答 1

Stack Overflow用户

发布于 2021-07-09 21:40:22

我还经常在子组件中使用父组件,但没有(或没有)使用App.component方法

在vue3中,我通常使用provide/inject。方法

提供

代码语言:javascript
复制
const app = createApp(App);
app.provide('someVarName', someVar);  // `Provide` a variable to all components here

注入:

代码语言:javascript
复制
// In *any* component
const { inject } = Vue;
...
setup() {
  const someVar = inject('someVarName');   // injecting variable in setup

  return {someVar}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66273763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档