vue3中使用动态组件

简介: vue3中使用动态组件

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

1、从vue2移植到vue3后,开始定义的动态组件数组如下:

const allFormComponent = computed(() => {
    return [
        {
          text:'单表示例',
          routeName: '@/views/workflow/demo/wf',
          component:  () => import('@/views/workflow/demo/wf'),
          businessTable:'wf_demo'
        },
        /*{
          text:'主子表示例',
          routeName:'@/views/workflow/demo/modules/CesOrderMainForm',
          component:() => defineAsyncComponent(import(`@/views/workflow/demo/modules/CesOrderMainForm`)),
          businessTable:'ces_order_main'
        }*/
    ]
  })

但通过上面方式显示不正常,后修改成2方式

2、从vue2移植到vue3后,开始定义的动态组件数组如下:

const allFormComponent = computed(() => {
    return [
        {
          text:'单表示例',
          routeName: '@/views/workflow/demo/wf',
          component: defineAsyncComponent( () => import('@/views/workflow/demo/wf')),
          businessTable:'wf_demo'
        },
        /*{
          text:'主子表示例',
          routeName:'@/views/workflow/demo/modules/CesOrderMainForm',
          component:() => defineAsyncComponent(import(`@/views/workflow/demo/modules/CesOrderMainForm`)),
          businessTable:'ces_order_main'
        }*/
    ]
  })

通过上面方式可以正常显示了,但会报下面的警告

      received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.

警告原因:vue接收到一个组件,该组件是一个响应式对象。这可能会导致不必要的性能开销,应该通过使用’ markRaw ‘或使用’ shallowRef ‘而不是’ ref '来避免。

3、通过上面提示  ,我们进行调整

const allFormComponent = computed(() => {
    return [
        {
          text:'单表示例',
          routeName: '@/views/workflow/demo/wf',
          component: markRaw(defineAsyncComponent( () => import('@/views/workflow/demo/wf'))),
          businessTable:'wf_demo'
        },
        /*{
          text:'主子表示例',
          routeName:'@/views/workflow/demo/modules/CesOrderMainForm',
          component:() => defineAsyncComponent(import(`@/views/workflow/demo/modules/CesOrderMainForm`)),
          businessTable:'ces_order_main'
        }*/
    ]
  })

通过上面方式后,既不报警,也能正常使用了。

4、效果图


相关文章
|
7天前
|
JavaScript
vue组件中的插槽
本文介绍了Vue中组件的插槽使用,包括单个插槽和多个具名插槽的定义及在父组件中的使用方法,展示了如何通过插槽将父组件的内容插入到子组件的指定位置。
|
5天前
|
缓存 监控 UED
升级 Vue3 时,如何减少打包体积的增加?
升级 Vue3 时,如何减少打包体积的增加?
84 59
|
5天前
|
JavaScript
在vue3中(vite)引入unocss,安装配置unocss
在vue3中(vite)引入unocss,安装配置unocss
|
6天前
|
缓存 JavaScript 前端开发
「offer来了」从基础到进阶原理,从vue2到vue3,48个知识点保姆级带你巩固vuejs知识体系
该文章全面覆盖了Vue.js从基础知识到进阶原理的48个核心知识点,包括Vue CLI项目结构、组件生命周期、响应式原理、Composition API的使用等内容,并针对Vue 2与Vue 3的不同特性进行了详细对比与讲解。
「offer来了」从基础到进阶原理,从vue2到vue3,48个知识点保姆级带你巩固vuejs知识体系
|
5天前
|
API UED
如何实现Vue2项目升级Vue3?
如何实现Vue2项目升级Vue3?
13 1
|
5天前
|
JavaScript
vue 函数化组件
vue 函数化组件
|
7天前
|
JavaScript 前端开发 API
vue3的传送门teleport究竟有多神奇?suspense发起异步请求有多简约?
该文章介绍了Vue3中新特性Teleport和Suspense的使用方法,演示了如何使用Teleport进行DOM节点的非父子关系传送,以及Suspense在处理异步组件加载时的优雅展示和错误处理技巧。
|
7天前
|
JavaScript
particles 粒子背景插件在vue3中的使用
本文介绍了如何在Vue 3项目中使用`particles.vue3`库来创建粒子背景特效。文章提供了粒子背景插件的概述、安装步骤、配置参数说明,并展示了粒子特效的实现效果。同时,提供了在main.js中进行全局配置、在Vue组件中使用粒子背景组件的示例代码,以及完整代码的下载链接。
|
7天前
|
缓存 JavaScript 算法
卷不动也得继续学!紧跟vue3的步伐,再来get一波进阶新特性!
该文章深入讲解了Vue3的进阶新特性,包括`watchEffect`的使用、性能优化策略、Vite构建工具的优势以及全局API的变化等内容,帮助开发者更好地掌握Vue3的开发技巧。
卷不动也得继续学!紧跟vue3的步伐,再来get一波进阶新特性!
|
7天前
vue2的响应式原理学“废”了吗?继续观摩vue3响应式原理Proxy
该文章对比了Vue2与Vue3在响应式原理上的不同,重点介绍了Vue3如何利用Proxy替代Object.defineProperty来实现更高效的数据响应机制,并探讨了这种方式带来的优势与挑战。
vue2的响应式原理学“废”了吗?继续观摩vue3响应式原理Proxy
下一篇
无影云桌面