位置: IT常识 - 正文

【Vue】动态组件和异步组件(vue 动态组件)

发布时间:2024-01-17
【Vue】动态组件和异步组件

推荐整理分享【Vue】动态组件和异步组件(vue 动态组件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue动态组件component,vue 动态组件,vue 动态组件,vue 动态组件绑定model,vue 动态组件,vue动态组件component,vue.extend动态组件,vue动态组件component,内容如对您有帮助,希望把文章链接给更多的朋友!

‍‍今天我们来学习动态组件和异步组件。 什么是动态组件? 什么是异步组件? 代码示例:

解读代码:

子组件我给它起个名字叫做input-item,‍‍我创建这样的一个组件,然后它里面会有一个input框, 在这里面我可以用一下组件,怎么用? 我们直接在模板里面去写一下 input-item,因为它是一个全局组件,所以我可以直接用。

然后我再写一个组件,比如说我写一个叫做common-item,它非常简单,它就是个div标签。‍‍显示一个hello-world, 回到页面上刷一下:

接着我要做的事情就是‍‍我希望通过一个变量来控制 input框和hello world的展示,如果hello world展示,input框就隐藏,‍‍反之如果input的框展示 hello world 就隐藏,实现的是这样一个功能。‍‍

怎么写? 在父组件里面,我们定一个data,写一个return, input-item 是组件的名字。‍‍

第19-20行代码: v-show 它展不展示取决于currentItem是否等于 input-item。‍‍

如果你现在这个变量是input-item,那么input组件就去展示, 下面这块复制一份,‍‍如果你是 common-item的时候,那么你下面 hello world就展示。‍‍

现在是input-item,所以只展示 input的框:

我再加一个按钮,它是一个叫切换按钮:

我们写了一个@click等于handleClick。‍‍在methods里面我们去写一下 handleClick,‍‍怎么写? if this点currentItem等于common-item,做一个切换, 否则this点currentItem等于input-item,

这块代码可以用一个三元运算符来表示,但if-else这么写可能看起来更容易看懂,‍‍ 写完这块代码之后,我们就可以做到一个切换效果刷新: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y01qGBNs-1663341209446)(https://www.yuucn.com/wp-content/uploads/2023/05/1684563140-84ca55d6f895399.png)]

点击切换 hello world和 input框 之间就可以实现一个切换,‍‍那么这么去写实际上代码量是有点大的,‍‍或者说我们可以通过动态组件这样的概念来简化我们的代码,我们可以怎么去优化我们代码?我们这么去写:

我们在这里用一个固定的组件名叫做component,然后它会接受一个叫做 is 这样的属性参数,‍‍我接收谁?我接收 currentItem, 然后这样的一个动态组件的语法就可以替换掉下面这两行的语法:

我们先把这两行代码干掉,然后我们分析一下动态语法是什么意思。它指的是我要显示一个组件,这个组件是谁呢?‍‍这个组件是currentItem决定的, 如果currentItem是input-item,那么我展示的组件就是input-item,‍‍

如果你currentItem 数据是comment-item,那么我展示了这个组件就是comment-item,‍‍所以动态组件指的就是这样的一个标签,能够让我们去做组件之间切换的时候,‍‍直接通过数据改变组件的内容,代码更精简一些。‍‍

但是我们注意这样一个细节,比如我在input框这个页面上,‍‍我输入123点击切换回到了hello world 这里, 再点击一下又回到了input 框,但是123已经不见了:

所以当你使用动态组件的时候会存在这样的一个问题,也就是之前你的输入的内容/数据 切换之后回来就没了,‍‍如何解决这个问题?

我们可以再引入一个keep-alive这样缓存的标签:

我们在动态组件外面加一个keep-alive。 加完keep-alive之后,我们保存一下,看下效果:

【Vue】动态组件和异步组件(vue 动态组件)

对效果解读:

输入123切换会显示到 hello world 再切换,它会把123保存下来。

所以keep-alive的意思就是‍‍当我的动态组件第一次渲染的时候,我会把它里面输入的一些状态,它的后面变更的一些情况都记录下来,‍‍当你回过来再用这个组件的时候,我会从缓存里把之前那些数据拿过来填充上,所以它有一个缓存的特性,‍‍所以动态组件和keep-alive有的时候会一起使用,一定要记住。‍‍

动态组件它是什么意思?‍‍它是根据数据的变化,结合component这个标签‍‍来随时动态切换组件的显示,这个就是动态组件的概念。‍‍ 怎么用? 通过一个component这样的标签上面用is这样的一个特殊的属性,固定的属性,‍‍然后传入对应的数据,那么这个组件到底显示是谁,就会由这个数据的内容来决定。‍‍

你是input-item就展示input-item。

接下来我们再来讲一个异步组件:

示例代码:

功能:展示 hello world

效果:

解读:

在template里面写一个div标签,‍‍,然后我用一下 comment-item 这样的组件, 保存刷新,hello world 就展示出来了。

这个时候comment-item就叫做同步的组件,‍‍因为你调用组件的时候,立即组件的代码就会顺序的执行,所以它是同步的过程,‍‍叫做一个同步组件,

我们可以定一个异步组件,带大家来看一看什么叫异步组件。‍‍首先我们定义异步组件的话,在上面的话我们要这么去定义,‍‍我们定一个const叫做AsyncCommonItem这样的一个组件,它等于什么?‍‍

它等于Vue点defineAsyncComponent。‍‍ 然后在这里面我们要传入一个函数,这个函数要return一个new Promise,返回一个Promise对象,此时代码:

我们在这里这么去注册组件:

我们也可以怎么写?这么去写就行了:

我们创建一个异步的组件,异步组件可以做一些什么事情呢?‍‍它可以异步的去执行一些组件的逻辑,比如说现在它是一个 Promise, Promise里面就会有resolve‍‍和reject这两个状态。‍‍关于Promise的内容,大家可以根据需要补一下js的基础知识。

我们可以过多少秒,我们可以过4秒,‍‍然后我们resolve‍‍一下向外触发一个组件的内容,比如说向外触发一个template,这是真正组件的内容,比如说‍‍div this is an async component。‍‍

这样的话我就写了一个异步的组件,‍‍我们先不管它里面是什么样的意思,我们先用一下 异步的组件:

页面刷新一下:

首先它展示hello world,大家等待4秒,

this is an async component 打印出来了,‍‍也就是组件它的执行逻辑并不是立即就执行的,并不是一个同步的过程,而是一个异步的过程。‍‍异步是怎么样的一个异步,它是一个Promise,它过了4秒之后触发了 Promise,‍‍然后来告诉你组件到底展示成什么样子,‍‍4秒之后 Promise被触发,然后异步组件才真正的知道ta要展示什么,才会把对应的内容展示出来,‍‍所以这是一个异步的过程。‍‍

异步组件有什么用呢?‍‍现在这个例子我们看起来好像异步组件并不能解决我们实际上的什么问题,但是实际上‍‍当我们有了异步组件这个概念之后,其实我们可以通过异步的方式动态的加载一些其他的组件,‍‍这样带来的好处就是我们可以把一个大型的项目拆分成很多小的js文件,‍‍然后再需要用到这些小js文件的时候,通过异步组件,我们再去引入这些js文件,再去使用这些组件,‍‍所以可以把一个大型项目的代码拆分成很多小的代码片段,最终在需要的时候再把这些代码片段组合成一个大型的项目,‍‍所以这块底层的实现就要完全依赖于异步组件的这样的一个概念了,‍‍

到这里你只需要记住异步组件怎么去写,一样的定义一个组件的名字,‍‍在后面调用Vue点defineAsyncComponent的方法里面传一个函数,这个函数返回一个Promise,‍‍这样的写法其实你就构建了一个异步组件。

动态组件是根据数据的变化,结合component的标签实现组件之间的切换,‍‍而异步组件是异步执行某些组件的逻辑。

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

上一篇:yolov5 Grad-CAM可视化,以及对可视化过程的分析(yolo v5 可视网络结构)

下一篇:Vue 动态菜单+动态路由(基于Element UI)(vue实现动态菜单权限配置)

  • 360浏览器怎么切换极速模式和兼容模式(360浏览器怎么切换模式)

    360浏览器怎么切换极速模式和兼容模式(360浏览器怎么切换模式)

  • 联想笔记本电脑亮度调节失灵怎么办(联想笔记本电脑黑屏打不开怎么办)

    联想笔记本电脑亮度调节失灵怎么办(联想笔记本电脑黑屏打不开怎么办)

  • vivo NEX 3s快充功率是W(vivo nex3快充多少瓦)

    vivo NEX 3s快充功率是W(vivo nex3快充多少瓦)

  • 快手商家号和个人号的区别(快手商家号个人介绍怎么写)

    快手商家号和个人号的区别(快手商家号个人介绍怎么写)

  • 苹果11如何关闭拍照声音(苹果11如何关闭境外来电)

    苹果11如何关闭拍照声音(苹果11如何关闭境外来电)

  • vivo手机原装膜要不要撕了(vivo手机原装膜可以撕下来吗)

    vivo手机原装膜要不要撕了(vivo手机原装膜可以撕下来吗)

  • 7p可以遥控空调嘛(7p能控制空调吗)

    7p可以遥控空调嘛(7p能控制空调吗)

  • 淘宝怎么删除待付款订单(淘宝怎么删除待付款?)

    淘宝怎么删除待付款订单(淘宝怎么删除待付款?)

  • 抖音文字怎么超过55(抖音文字怎么超前播放)

    抖音文字怎么超过55(抖音文字怎么超前播放)

  • 戴尔台式机重装系统按哪个键(神舟笔记本重装系统)

    戴尔台式机重装系统按哪个键(神舟笔记本重装系统)

  • 抖音直播间点赞要不要充钱(抖音直播间点赞显示手速太快休息一会儿是什么意思)

    抖音直播间点赞要不要充钱(抖音直播间点赞显示手速太快休息一会儿是什么意思)

  • qq照片回收站多久过期(qq照片回收站2020)

    qq照片回收站多久过期(qq照片回收站2020)

  • boss直聘会查看访客记录吗(boss直聘查看面试结果对方知道吗)

    boss直聘会查看访客记录吗(boss直聘查看面试结果对方知道吗)

  • 剪映的慢动作特效在哪(剪映慢动作特效哪种滤镜好看)

    剪映的慢动作特效在哪(剪映慢动作特效哪种滤镜好看)

  • 优酷已停止怎么回事(优酷已停止怎么重新登录)

    优酷已停止怎么回事(优酷已停止怎么重新登录)

  • oppo手机重启在哪(OPPO手机重启在线更新显示没有网)

    oppo手机重启在哪(OPPO手机重启在线更新显示没有网)

  • 左连接和右连接的区别(左连接和右连接的分别解决什么问题)

    左连接和右连接的区别(左连接和右连接的分别解决什么问题)

  • hwt文件怎么打开(hwt文件放哪里)

    hwt文件怎么打开(hwt文件放哪里)

  • 京东如何删除拒收订单(京东如何删除拒收快递)

    京东如何删除拒收订单(京东如何删除拒收快递)

  • 荣耀v20解锁方式有几种(荣耀v20被锁定怎么刷机)

    荣耀v20解锁方式有几种(荣耀v20被锁定怎么刷机)

  • ps抠图换天空(ps扣掉天空)

    ps抠图换天空(ps扣掉天空)

  • 电话卡剪坏了怎么办(电话卡剪坏了怎么补办)

    电话卡剪坏了怎么办(电话卡剪坏了怎么补办)

  • vue element-ui 手机号校验 & 验证码校验 & 获取验证码倒数60秒无样式实现(elementui 手机端)

    vue element-ui 手机号校验 & 验证码校验 & 获取验证码倒数60秒无样式实现(elementui 手机端)

  • 外地预缴税金
  • 劳务费个人所得税由谁申报
  • 小规模简易征收计算方法
  • 暂估入库可以跨年吗
  • 一般纳税人需要申报什么税
  • 事业单位缴纳税款比例
  • 公司对员工的罚款最多可以罚多少
  • 公司支付员工工伤赔偿怎么做账
  • 库存方面的会计是做什么的
  • 专利转让费用能否计入研发
  • 行政事业单位工作经费使用范围
  • 母公司借款给子公司作为投资
  • 单位固定资产出售账务处理
  • 如何申报固定资产投资
  • 产品检测费用计入什么科目
  • 广告机计入什么费用
  • 售后回租业务的会计分录
  • 成品油发票应该怎么冲红?
  • 发票查出来显示不一致是为啥
  • 离退休员工再任职薪酬的财税处理?
  • 企业撤回投资说明模板怎么写
  • 需要缴纳消费税的委托加工存货,由受托方
  • 附加税是销项税减去进项税
  • 更改代理设置失败 可能无网络连接
  • 收到上级工会下拨的工会经费
  • 小规模餐饮业怎样报税减免
  • echarts纵坐标加单位
  • php配置文件的名字是
  • 预收的购货款属于收入吗
  • vue报错cannot read property
  • 工商年报纳税总额包括滞纳金吗
  • 什么是重大会计事务所
  • 【AIGC】1、爆火的 AIGC 到底是什么 | 全面介绍
  • 预提借款税费会减少吗
  • go开发web项目
  • yolov3 pytorch详解
  • 还银行贷款怎么做凭证
  • 结转损益的凭证需要打印吗
  • 其他权益工具投资是金融资产吗
  • 租店铺需要什么流程需要注意什么事项?
  • python怎么打开mac本地文件
  • php怎么关闭
  • sqlserver设置简单模式
  • 房租押金可以要回来吗
  • 房产税的纳税人包括
  • 水利建设专项基金土增税清算能扣除吗
  • 用友t6操作流程
  • 印花税征税对象是什么
  • 出口退税率为0的账务处理
  • 捐赠人赞助属于什么会计科目
  • 税金及附加核算哪些税费
  • 开票金额大于收入金额
  • 私募基金公司收入高吗
  • 苗木税票怎么抵扣
  • 消费税出口退税吗
  • 信托保障基金会返还吗
  • 银行存款日记账与银行对账单之间的核对属于
  • 预缴的附加税月末结转吗
  • 期末留抵税额可以冲减欠税吗
  • 安装mysql5.7虚拟机教程
  • mysql分区实现
  • 华硕主板进入bios怎么设置u盘启动
  • mac上怎么用ppt
  • win7检测有错误怎么办
  • 进程dwm
  • 系统升级为中狼
  • linux扩容inode
  • win8如何进入高级启动项模式
  • 基于专业性的家校双向互动,需要家长的学校教育参与
  • 网页制作css怎么用
  • python利用for循环求1到100的奇数之和
  • jquery获取值的几种方法
  • nodejs操作mysql数据库
  • python做开发
  • python安装基础教程
  • 唐山宴订餐电话是多少
  • 广西国税发票查询系统
  • 10%加计抵减政策条件
  • 新土地管理法37条解释
  • 宁波税务干部学校
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号