美文网首页
vue3中如何自定义创建组件并挂载

vue3中如何自定义创建组件并挂载

作者: 张中华 | 来源:发表于2023-07-11 10:33 被阅读0次

在日常开发中,我们可能会遇到一种情况:组件太灵活,且无法预先定义。那么我们就需要能够创建组件的能力,并且能组合到我们现有的界面中。

基础API

// 创建
app.component(name, {})
// 组合
<component :is="createVueComponent()"></component>

很多人看到这里应该就大致知道怎么做了,后面的示例可以直接略过~

示例

集成一个创建组件的方法

import { createApp } from 'vue';
import { TComponent } from './type';

export const createVueComponent = (component: TComponent) => {
    const app = createApp({});
    app.component(component.name, {
        template: component.template,
        data: () => component.data || {},
        props: component.props || {},
        methods: component.methods,
        onMounted: component.onMounted,
    });
    return app.component(component.name);
};

使用场景

这里正在向低代码扩展,所以只能存储字符串,那么这里就得有能利用字符串创建组的能力。

 <!-- 自定义内容 -->
 <template v-else-if="item.slot">
   <!-- 低代码:利用字符串创建新的组件 -->
   <component v-if="(typeof item.slot === 'object')" 
     :is="createVueComponent({ name: item?.slot?.name || '', template: item.slot.template, props: item.slot.props  })" 
     :row="scope.row" :index="scope.$index" :label="item.label" ></component>
   <!-- 当组件使用 -->
   <slot v-else :name="'zh-table-' + item.prop" :row="scope.row" :index="scope.$index" :label="item.label" />
 </template>

相关文章

  • 组件的生命周期

    挂载 组件实例被创建并插入到 DOM 中会触发挂载 constructor componentWillMount ...

  • vue-router

    定义并引入组件 定义路由 创建 router 实例 创建和挂载到根实例(main.js中挂载到根实例) 路由信息对...

  • router

    先定义模板 创建组件 定义路由 创建路由实例并挂载 html的写法

  • React常用生命周期介绍

    挂载(创建) 当组件实例被创建并插入 DOM 中时,创建阶段的生命周期函数在在组件的一生中只执行一次。其生命周期调...

  • React 组件完整生命周期方法介绍

    组件生命周期 生命周期图谱 挂载 当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下: construc...

  • 《图解Vue3.0》- 第13节 组件生命周期

    vue3的生命周期 挂载阶段 beforeCreate(创建前) created(创建后) beforeMount...

  • React学习总结3--生命周期函数

    每个组件都包含“生命周期方法”。速查表。demos源码 挂载 当组件实例被创建并插入 DOM 中时,其生命周期调用...

  • 微信小程序(三)

    小程序自定义组件使用 第一步:创建自定义组件 第二步:如何引入组件 例如:在login页面中引入dialog组件 ...

  • wx小程序三

    小程序自定义组件使用 第一步:创建自定义组件 第二步:如何引入组件 例如:在login页面中引入dialog组件 ...

  • VX小程序三

    小程序自定义组件使用 第一步:创建自定义组件 第二步:如何引入组件 例如:在login页面中引入dialog组件 ...

网友评论

      本文标题:vue3中如何自定义创建组件并挂载

      本文链接:https://www.haomeiwen.com/subject/wkwyudtx.html