位置: IT常识 - 正文

vue3 使用defineAsyncComponent与component标签实现动态渲染组件(vue3.0用法)

发布时间:2024-01-10
vue3 使用defineAsyncComponent与component标签实现动态渲染组件

推荐整理分享vue3 使用defineAsyncComponent与component标签实现动态渲染组件(vue3.0用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3.0用法,vue3使用ref,vue3使用ref,vue3使用ref,vue3使用ref,vue3使用$refs,vue3 definecomponent,vue3使用ref,内容如对您有帮助,希望把文章链接给更多的朋友!

内容有些啰嗦,内容记载了当时遇到了bug以及解决问题的思路。

业务场景简述: 前端做配置化组件,通过url内的唯一标识,请求后端sql 哪取页面配置信息,前端通过配置信息动态渲染查询表单,导出、表格,toolbar以及动态弹窗;该动态渲染组件的功能,就是渲染的toolbar内的按钮,类型为自定义弹窗,弹窗路径为后端配置数据,前端通过点击该按钮,打开指定路径下的弹窗组件。

vue3 使用defineAsyncComponent与component标签实现动态渲染组件(vue3.0用法)

之前用的vue2的动态挂载组件,也没见vue3那么麻烦,官网上的例子以及网上的所以例子都是前端知道要导哪些组件,然后程序进入就直接导进来了,只是写了逻辑动态切换。我这个不一样,需要挂载的组件是未知的。所以实现起来有点吃力。

一、基础的动态引入组件: 简单的动态引入的意思是,前端知道要引入哪些组件,将多个组件引入到父组件中,但不渲染它,满足一定条件后,才去在某个位置渲染指定的组件。

<template> <custom-modal ref="custom"></custom-modal></template><script> import { reactive, ref, shallowReactive, onActivated, defineAsyncComponent, } from 'vue'; const customModal = defineAsyncComponent(() => import('./modal/CustomModal.vue')); const custom = ref(); </script>

以上的例子就是通过vue的defineAsyncComponent实现挂载组件,并赋值给customModal ,模板中可以直接使用<custom-modal>作为标签使用,也可以将它赋值给component中的is属性,is属性执向一个变量,可通过业务逻辑动态,更改该变量的值,就可以实现多个组件进行来回的渲染了

<template><component :is="componentKey" ref="custom"></component></template> import { reactive, ref, shallowReactive, onActivated, defineAsyncComponent, } from 'vue'; const componentKey = ref(null); const components: any = shallowReactive({}); const customModal = defineAsyncComponent(() => import('./modal/CustomModal.vue')); componentKey = customModal

二、复杂的引入:不确定到底引入什么组件,组件的路径由后端返回 将以上代码 添加到项目代码中,并不能实现,虽然引入不报错,但是ref一直为undefined,无法调用动态组件内的open函数。 不断尝试了很多次,得出以下结论

1.起初是在按钮的click函数内去挂载自定义组件并调用ref函数的,ref为undefined。尝试多次不能实现功能(这里是挂载与调用最合适的位置),2.接着又在初始化配置数据时(查询后端sql),axios的then函数内挂载组件,然后点击按钮的地方调用ref内的函数,ref依旧为null。3. 接着在最外层,调用初始化时挂载,也就是生命周期函数体内,测试还是一样的结果。4. 接着发现带有async函数体内挂载组件,也无法完成。5.单独写个函数,不加async,函数内挂载组件,然后再生命周期外调用该函数,按钮内调用ref内的方法,成功弹窗。这并不是我想要的,因为路径不是固定的,它要等到后端sql放回结果,才能执行。

总结:上面的多次测试,得出以下结论,都不能让动态组件ref对象有值 1、不能在组件的事件函数内挂载,

2、不能在axios的then函数体内挂载

3、不能在带有async

本文链接地址:https://www.jiuchutong.com/zhishi/290778.html 转载请保留说明!

上一篇:伯尔尼老城,瑞士 (© Simon Zenger/Alamy)(瑞士伯尔尼小镇)

下一篇:【react从入门到精通】React JSX详解(react最新教程)

  • 一个工程中可以有多个主函数
  • 固定资产转移是什么意思
  • 银行本票与银行本票存款的区别
  • 已付工资在资产负债表中体现
  • 转租房产税计税依据
  • 生产成本月末转到哪里
  • 小规模纳税人企业所得税怎么申报
  • 新会计准则下长期股权投资的变化
  • 分给当期投资者利润如何做会计分录?
  • 结转以前的其他业务成本如何做会计分录呢?
  • 固定资产盘亏账务处理例题
  • 建筑业购买车辆怎么入账
  • 柴油可以销售吗
  • 会计报表的附表包括哪些
  • 企业报税的详细流程期限为
  • 员工出差买的保险怎么入账
  • 个人租赁汽车给公司怎么开发票
  • 公司租车交税
  • 质量扣款入什么科目
  • 以前年度损益的一级科目
  • 不开票收入申报是含税收入吗
  • 广告制作包括印花吗
  • 劳务费没发票怎样下账
  • 板栗怎样保存1年不坏
  • 寿命最短的苹果手机
  • 房产税去哪交税
  • 备用金报销怎么做账
  • 新准则规定
  • 来料加工企业转型是转成两个企业吗
  • vue聊天系统
  • 前端微信小程序支付功能怎么实现
  • vue route 参数
  • yolov5加入注意力机制后网络后进行剪枝
  • ntpd命令详解
  • centos7搭建http
  • php对象是值传递还是引用传递
  • 代收水电费交税吗
  • 进项税没入账补入账分录
  • 关于英语的25个单词
  • 酒店周转材料怎么摊销
  • 外勤会计是做什么的
  • 背书的行为
  • 收到政府补贴如何入账
  • 固定资产提前报废当月计提折旧吗
  • 建筑业清包工合同范本
  • 固定资产折旧年限
  • 汇算清缴退税分录
  • 购入固定资产会计处理
  • 年终汇算清缴的税种
  • 分包工程是什么意思
  • 教育费返还款计入收入吗
  • 社保系统个人信息
  • 会计审计属于什么类别
  • win2003安装加载阵列卡驱动
  • mysql的随机函数
  • 计算机彻底删除文件的方法
  • ubuntu包管理命令
  • ubuntu16.04怎么设置网络
  • Linux系统中文件的文件名存储在文件所在的目录
  • 怎么删除隐藏文件夹win 10
  • windows8使用技巧
  • jquery代码实现鼠标点击
  • linux shell $1
  • 关闭默认共享和共享文件夹
  • jquery设置滚动条到底部
  • jquery根据name获取对象数组
  • 解决问题
  • <2> unity3d 分包与上google play 之具体实战
  • node.js实战
  • js 显示当前时间
  • python console不能用
  • js怎么获取密码框内容
  • python运行批处理文件
  • jquery deferred对象
  • 河南的省直
  • 古代税收和现代税收
  • 1月纳税申报截止时间
  • 网上订机票怎么取票
  • 教育用地性质可以更改么
  • 如何查询有没有交医保费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号