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自执行函数之伪命名空间封装法
Dec 25 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
网页防止tab键的使用快速解决方法
Nov 07 Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 Javascript
详解Javascript继承的实现
Mar 25 Javascript
JavaScript学习笔记整理_关于表达式和语句
Sep 19 Javascript
BootStrap实现文件上传并带有进度条效果
Sep 11 Javascript
AngularJS表单验证功能
Oct 19 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
详解Vue2.5+迁移至Typescript指南
Aug 01 Javascript
微信小程序 行的删除和增加操作实现详解
Sep 29 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 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中用memcached实现页面防刷新功能
2014/08/19 PHP
php创建多级目录的方法
2015/03/24 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
公司活动策划方案
2014/01/13 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
大学毕业寄语大全
2014/04/10 职场文书
2019消防宣传标语!
2019/07/10 职场文书
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript