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 相关文章推荐
jQuery ui 1.7更新小结
Aug 15 Javascript
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
Jul 29 Javascript
JS window对象的top、parent、opener含义介绍
Dec 03 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
谈谈因Vue.js引发关于getter和setter的思考
Dec 02 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
Bootstrap Table 搜索框和查询功能
Nov 30 Javascript
Vue工程模板文件 webpack打包配置方法
Dec 26 Javascript
详解适配器在JavaScript中的体现
Sep 28 Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 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
基于mysql的论坛(5)
2006/10/09 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
浅谈PHP封装CURL
2019/03/06 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
浅谈js中的bind
2019/03/18 Javascript
python2 与 python3 实现共存的方法
2018/07/12 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python连接Impala实现步骤解析
2020/08/04 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
HTML5的语法变化介绍
2013/08/13 HTML / CSS
伦敦一卡通:The London Pass
2018/11/30 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
实用求职信范文分享
2013/12/25 职场文书
办护照工作证明范本
2014/01/14 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书