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入门教程 Cookies
Jan 31 Javascript
使用jquery实现select添加实现后台权限添加的效果
May 28 Javascript
jQuery学习笔记之控制页面实现代码
Feb 27 Javascript
在HTML代码中使用JavaScript代码的例子
Oct 16 Javascript
JS对字符串编码的几种方式使用指南
May 14 Javascript
js实现千分符和保留几位小数的简单实例
Aug 01 Javascript
js获取上传文件的绝对路径实现方法
Aug 02 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
Easy UI动态树点击文字实现展开关闭功能
Sep 30 Javascript
JavaScript EventEmitter 背后的秘密 完整版
Mar 29 Javascript
Javascript实现购物车功能的详细代码
May 08 Javascript
详解微信小程序图片地扯转base64解决方案
Aug 18 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
Session的工作方式
2006/10/09 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
学习React中ref的两个demo示例
2018/08/14 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
销售高级职员求职信
2013/10/29 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
住房租房协议书
2014/08/20 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
SQL基础的查询语句
2021/11/11 MySQL
Python基本的内置数据类型及使用方法
2022/04/13 Python