记一次vue3.2中动态组件加载
<component
:key="componentName"
:is="componentName"
:ref="componentName"
></component>
import MenuDetail from "./components/menu-detail.vue";
import MenuAdd from "./components/menu-add.vue";
import MenuEdit from "./components/menu-edit.vue";
const componentName = ref()
componentName.value = MenuDetail
....
runtime-core.esm-bundler.js:38 [Vue warn]:Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.
const componet = {
MenuDetail,
MenuAdd,
MenuEdit
}
const componentName = shallowRef()
componentName.value = componet['MenuDetail']
<component
:key="componentName"
:is="dialogComponents.get(componentName)"
:ref="componentName"
></component>
const componentName = ref('')
const dialogComponents = ref(new Map<string, any>())
dialogComponents.value.set(
'MenuDetail',
defineAsyncComponent(() => import('./components/menu-detail.vue'))
)
dialogComponents.value.set(
'MenuAdd',
defineAsyncComponent(() => import('./components/menu-add.vue'))
)
dialogComponents.value.set(
'MenuEdit',
defineAsyncComponent(() => import('./components/menu-edit.vue'))
)