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 数值型和字符串型之间的转换
Jul 25 Javascript
JavaScript和CSS通过expression实现Table居中显示
Jun 28 Javascript
jquery图片放大功能简单实现
Aug 01 Javascript
Javascript实现禁止输入中文或英文的例子
Dec 09 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 Javascript
详解如何用webpack打包一个网站应用项目
Jul 12 Javascript
mui back 返回刷新页面的实例
Dec 06 Javascript
ES6 中可以提升幸福度的小功能
Aug 06 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
Sep 14 Javascript
使用Node.js在深度学习中做图片预处理的方法
Sep 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
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
python实现二维插值的三维显示
2018/12/17 Python
Python中print和return的作用及区别解析
2019/05/05 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
python3访问字典里的值实例方法
2020/11/18 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
餐饮周年庆活动方案
2014/08/14 职场文书
公司周年庆活动方案
2014/08/25 职场文书
运动会5000米加油稿
2015/07/21 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
python process模块的使用简介
2021/05/14 Python