vue中toggle切换的3种写法
前言:查看下面代码,在任意编辑器中直接复制粘贴运行即可
1:非动态组件(全局注册2个组件,借用v-if指令和三元表达式)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>toggle切换-非动态组件方式</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="root">
<child-one v-if="type === 'child-one'"></child-one>
<child-two v-if="type === 'child-two'"></child-two>
<button @click="handleClick">call me</button>
</div> <script> Vue.component('child-one', {
template: '<div>child-one</div>'
}) Vue.component('child-two', {
template: '<div>child-two</div>'
}) var vm = new Vue({
el: '#root',
data: {
type: 'child-one'
},
methods: {
handleClick: function() {
this.type = this.type === 'child-one'?'child-two':'child-one'
}
}
})
</script>
</body>
</html>
2:动态组件(使用vue自带component标签,它表示一个动态组件,配合is属性绑定type,动态组件会根据is里数据的的变化,自动加载不同的组件)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>toggle切换-动态组件方式</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="root">
<component :is="type"></component>
<button @click="handleClick">call me</button>
</div> <script> Vue.component('child-one', {
template: '<div>child-one</div>'
}) Vue.component('child-two', {
template: '<div>child-two</div>'
}) var vm = new Vue({
el: '#root',
data: {
type: 'child-one'
},
methods: {
handleClick: function() {
this.type = this.type === 'child-one'?'child-two':'child-one'
}
}
})
</script>
</body>
</html>
3:使用once指令(不要过度使用)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>once指令</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="root">
<child-one v-if="type === 'child-one'"></child-one>
<child-two v-if="type === 'child-two'"></child-two>
<button @click="handleClick">call me</button>
</div> <script> Vue.component('child-one', {
template: '<div v-once>child-one</div>'
}) Vue.component('child-two', {
template: '<div v-once>child-two</div>'
}) var vm = new Vue({
el: '#root',
data: {
type: 'child-one'
},
methods: {
handleClick: function() {
this.type = this.type === 'child-one'?'child-two':'child-one'
}
}
})
</script>
</body>
</html>
注:once优点——每次切换vue底层都是先销毁,然后在创建一个组件,这样是有一定性能消耗的,
once指令切换组件时不会销毁在重新创建组件,而是在第一次切换时把组件存入内存,之后就直接从内存里拿出来使用
once缺点——建议不要过度使用这个指令。除非当你需要渲染大量静态内容时,
极少数的情况下它会给你带来便利,除非你发现渲染因此变得很慢,否则它是没有必要的,再加上它在后期会带来很多困惑,
例如,一个开发者并不熟悉 v-once 或漏看了它在模板中,他们可能会花很多时间去找出模板为什么无法正确更新
vue中toggle切换的3种写法的更多相关文章
- vue中使用echarts的两种方法
在vue中使用echarts有两种方法一.第一种方法1.通过npm获取echarts npm install echarts --save 2.在vue项目中引入echarts 在 main.js 中 ...
- t-sql 中between and 的一种写法
t-sql 中between and 的一种写法: where GETDATE() BETWEEN BeginDateTime AND EndDateTime; BeginDateTime,EndDa ...
- java中for循环的6种写法
有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考. package ForLoop; import java.util.ArrayList; import java.util.Itera ...
- Vue el与data的两种写法 && Object.defineProperty方法
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...
- 在JavaScript中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...
- js中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...
- 关于JQ中ready()方法的几种写法总结
——习惯贵在坚持,天才在于积累. 好久没写博客的我,似乎是忘记了当初写博客的初衷是要在博客笔记中提升自己的写作能力和积累自己的知识要点. 废话不多说. ready()方法作用: 在页面加载完成后,立即 ...
- 在js中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'H ...
- vue后台管理项目中菜单栏切换的三种方法
第一种方法:vue嵌套路由(二) <el-menu :default-active="defaultActive" style="min-height: 100%; ...
随机推荐
- Python之基本运算符
基本运算符 1.算符运算符 运算符 描述 例子 + 两个对象相加 a+b - 两个对象相减 a-b * 两个数相乘或返回一个被重复若干次的字符串 a*b / 两个数相除 a/b % 取模,返回除法的余 ...
- 企业如何做好B2C电商平台
导语本文主要讲了两个方面:1.企业如何定位B2C电商平台:2.企业做B2C遇到的问题. 一.企业如何定位B2C电商平台传统企业做B2C电子商务一般选用品牌.渠道.平台模式这三种,品牌模式是在网上建立一 ...
- Map拼接URL地址
import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @Author: hoje * Des ...
- 易飞审核员调用DEMO-DELPHI
作用:我已在其他文章里提过.直接调用易飞审核员程序,易飞9全版本全模块通用. 亮点:错误直接返回错误信息,并非错误代码. 最全.最优的易飞审核员接口开发,支持个案审核员接口开发.有需要的联系本人. 唯 ...
- STN(Spatial Transformer Networks)
url: https://arxiv.org/abs/1506.02025 year:2015 blog: https://kevinzakka.github.io/2017/01/10/stn-pa ...
- PHP面试题2019年阿里巴巴面试题及答案解析
一.单选题(共27题,每题5分) 1.Memcache与Redis的比较错误的是? A.Memcache过期后,不删除缓存,会导致下次取数据数据的问题,Redis有专门线程,清除缓存数据: B.Mem ...
- Oracle 去重后排序
因项目需求,需要将查询结果,去重后,在按照主键(自增列)排序,百度一番,记录下来 DEMO SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY S ...
- GDAL读取Shp问题解决:Unable to open EPSG support file gcs.csv
在GIS软件的开发中,经常用到开源库GDAL读取Shp数据,当shp数据中包含投影信息时,可能会遇到“Unable to open EPSG support file gcs.csv”错误提示,该错误 ...
- 【Gradle】Gradle构建脚本基础
Gradle构建脚本基础 Settings文件 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认名为settings.gradle,放在根工程目录下. 设置文件大多数的 ...
- 通过Thrift实现C#与Hbase交流
近期着手的一个项目需要将我方数据存储到Hadoop的大数据环境,由于本人是.net平台的开发者,没有怎么接触过大数据(因为他实在是太高大尚了).但还好baidu, google后,还是很找到了解决办法 ...