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 短路法代码精简
Aug 20 Javascript
Javascript读取cookie函数代码
Oct 16 Javascript
javascript 事件处理程序介绍
Jun 27 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 Javascript
详解获取jq ul第一个li定位的四种解决方案
Nov 23 Javascript
JS中使用textPath实现线条上的文字
Dec 25 Javascript
Node.js 使用request模块下载文件的实例
Sep 05 Javascript
Vue渲染过程浅析
Mar 14 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
vuejs实现下拉框菜单选择
Oct 23 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
PHP实现的简单异常处理类示例
2017/05/04 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
python实现月食效果实例代码
2019/06/18 Python
利用Python实现kNN算法的代码
2019/08/16 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
python的scipy实现插值的示例代码
2019/11/12 Python
使用python实现画AR模型时序图
2019/11/20 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
初中生物教学随笔
2015/08/15 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
2019销售早会主持词
2019/06/27 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript