位置: IT常识 - 正文

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

编辑:rootadmin
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最新教程)

  • 公积金贷款金额少怎么办
  • 综合收益什么时候结算
  • 发票税率金额如何得出
  • 邮票可以抵个税吗
  • 小规模申请自开专票
  • 发票查验是什么字体
  • 固定资产残值怎么处理什么时候处理
  • 应税劳务和应税服务不合理列支的有哪些
  • 生产企业购入材料怎么做分录
  • 视同销售不开票如何计算增值税?
  • 进口货物的关税完税价格不包括
  • 劳动合同解除和终止的经济补偿
  • 城建税和教育费附加的计税依据是什么
  • 建筑公司亏损异常怎么办
  • 金税三期退税
  • 营改增后甲供材税前扣除还是税后扣除?
  • 风险纳税人如何解除
  • 质保金付款时怎么付
  • 工程项目人工费比例
  • 如何使用快捷键截屏电脑
  • 小规模纳税人主要缴纳
  • linux系统怎么访问共享文件夹
  • 酒店布草洗涤赔偿怎样折旧
  • php-ml
  • 前端打包发布
  • yolov5训练参数说明
  • 存货成本在哪个表里
  • 购买方收到的违约金计入
  • 企业汇算清缴中,A107070表中的数据是自动跳出来嘛
  • 期末余额跟年初余额是什么意思
  • thinkphp i方法
  • 2023前端面试题目100及最佳答案
  • yolov1 实现
  • php7 openssl
  • 年度报表资产总额平均值怎么算
  • 织梦cms官网
  • 主营业务成本可以设明细科目吗
  • 销售折扣单独开票的会计分录
  • 金蝶软件做账流程图片
  • 出售固定资产不能作为企业的收入
  • sqlserver数据库版本号怎么查
  • 小规模免税收入怎么做账
  • 发票已经报送怎么处理
  • 公司实行全成本核算工资怎么算
  • 建筑企业收到发票未付款怎么做账
  • 通信费属于哪个会计科目
  • 绿化工程苗木成活率交工标准
  • 劳务收入是什么科目
  • 公司购入的房子卖了,如何交增值税
  • 未开票收入如何记账
  • 建筑公司需要什么人员
  • 旅游应当提示参加团队旅游的旅游者按照规定购买什么
  • 给法人交社保,不发工资可以吗
  • 建账的要点
  • Win2008 Server Core如何操作?5个步骤学会Win2008 Server Core操作
  • centos7 中文支持
  • win8.1 蓝屏
  • win7音频服务未响应
  • win10升级100完成不动
  • win7远程登录win10
  • win7更改文件名的方法
  • 怎么使用linux
  • win7开机黑屏只有一个鼠标箭头
  • windows7库功能
  • windows7屏幕颠倒
  • unity Toggle Groud
  • nodejs搭建web服务器
  • perl中的use strict
  • js是函数式编程语言吗
  • jquery中的选择器有哪些
  • jquery 图片插件
  • javascript简介和语法
  • [置顶]bilinovel
  • JavaScript电子时钟倒计时第二款
  • js的iframe
  • 税务认证系统如何操作
  • 税务局周末上班没
  • 公路客运购票
  • 国税局升迁难么
  • 印花税核定依据填写什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设