Vue 动态组件components和v-once指令的实现


Posted in Javascript onAugust 30, 2019

一、实现两个组件间互相展示、互相隐藏

<!DOCTYPE html>
<html>
<head>
  <title>动态组件</title>
  <script type="text/javascript" src="./vue-dev.js"></script>
</head>
<body>
  <div id="app">
    <child-one v-if="type=='child-one'" content="child-one"></child-one>
    <child-two v-if="type=='child-two'" content="child-two"></child-two>
    <button @click="handleChangeEvent">change</button>
  </div>
  <script type="text/javascript">
  Vue.component('child-one', {
    props: ["content"],
    template: `<div>{{content}}</div>`,
  });

   Vue.component('child-two', {
    props: ["content"],
    template: `<div>{{content}}</div>`,
  })

  var vm = new Vue({
    el: '#app',
    data(){
    	return{
    		type:'child-one'
    	}
    },
    methods:{
    	handleChangeEvent:function(){
    		this.type= this.type=="child-one" ? 'child-two':'child-one';
    	}
    }

  })
  </script>
</body>
</html>

页面效果图如下:

Vue 动态组件components和v-once指令的实现 

二、动态组件,简化页面代码

使用:父组件 dom标签使用 ,对组件名称进行绑定

<div id="app">
    <!-- <child-one v-if="type=='child-one'" content="child-one"></child-one>
    <child-two v-if="type=='child-two'" content="child-two"></child-two> -->

     <!--动态组件标签component 利用is接收指定标签组件-->
    <component :is="type" :content="type"></component>
    <button @click="handleChangeEvent">change</button>
  </div>

无论使用v-if还是components来使用动态组件的实现,都是在点击交互后,每一次页面效果的切换,会自动销毁前一个组件,再重新创建一个组件,页面则显示响应的内容, 这样的实现方式是比较消耗性能的

三、 v-show和v-once

使用v-show,则会只是隐藏在dom元素中,组件都会被创建。

在子组件中,加入v-once,当每次切换组件效果时,不再需要每次都经过创建-销毁的过程,而是在内存中直接取用上一次使用过的组件的内容

Vue.component('child-one',{
    template:'<div v-once>child-one</div>'
  })

  Vue.component('child-two',{
    template:'<div v-once>child-two</div>'
  })

使用v-once,可以有效提高静态内容的展示效率,提高性能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript StringBuilder类实现
Dec 22 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
Mar 29 Javascript
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
JS日期和时间选择控件升级版(自写)
Aug 02 Javascript
jQuery预加载图片常用方法
Jun 15 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
浅析node.js的模块加载机制
May 25 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
Mar 29 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
如何在vue 中引入使用jquery
Nov 10 jQuery
JavaScript实现商品评价五星好评
Nov 30 Javascript
java实现单链表增删改查的实例代码详解
Aug 30 #Javascript
vuex vue简单使用知识点总结
Aug 29 #Javascript
js中的this的指向问题详解
Aug 29 #Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
Aug 29 #Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
Aug 29 #Javascript
微信小程序实现购物车代码实例详解
Aug 29 #Javascript
vue图片加载失败时用默认图片替换的方法
Aug 29 #Javascript
You might like
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
世界第一个无线广播电台 KDKA
2021/03/01 无线电
多文件上载系统完整版
2006/10/09 PHP
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
Javascript 遍历对象中的子对象
2009/07/03 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
清空上传控件input file的值
2010/07/03 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
对python 调用类属性的方法详解
2019/07/02 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
简单的项目建议书模板
2014/03/12 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
学校搬迁方案
2014/06/15 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
丧事主持词
2015/07/02 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python