<template>
<div class="home">
<template v-if="false">//此时该template下面的内容都是不可见的
<h1>hahah</h1>
</template>
</div>
</template>
注意,v-show 不支持 元素,也不支持 v-else
v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。
因为v-if的优先级比v-for高,导致v-if会优先执行当v-if需要v-for里面的数据进行判断时可能就获取不到这样就会导致判断失效
如果想一起使用的话 可以将v-for移动到template标签上
<li v-for="todo in todos" v-if="!todo.isComplete">
{{ todo }}
</li>
//将上面代码变成下面的
<template v-for="todo in todos">
<li v-if="!todo.isComplete">
{{ todo }}
</li>
</template>
可以用 in 也可以 of key最好加上以便它能跟踪每个节点的身份,从而重用和重新排序现有元素
tips:不要使用对象或数组之类的非基本类型值作为 v-for 的 key。请用字符串或数值类型的值。
<ul>
<li v-for="(item,index) in items" :key="index">{{ item .name }}</li><!--可以用in循环-->
</ul>
<ul>
<li v-for="(item,index) of items" :key="index">{{ item .name }}</li><!--还可以用of循环-->
</ul>
data(){
return {
items:[
{name:'勒布朗',age:36},
{name:"戴维斯",age:26},
{name:"威少",age:32},
{name:"安东尼",age:37},
{name:'霍华德',age:37}
],
};
},
还可以循环对象
<ul>
<li v-for="(val,key,index) of lbj" :key="index">{{ val }}:{{ key }}:{{ index }}</li><!--还可以用of循环-->
</ul>
lbj:{
name:'勒布朗',
age:36,
team:"laker",
}
当 Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用“就地更新”的策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引位置正确渲染。
这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出。
push() 添加数据 返回值为数组的长度
pop() 删除最后一个数据 返回被删除的数据
shift() 删除第一个数据 返回被删除的数据
unshift() 可想数组前面添加一个或多个元素 返回数组的长度
splice()
第一个参数代表删除的起始位置负数就倒着来,第二个代表删除的数量为0就代表不删除,第三个代表添加的数据
sort((a,b)=>a-b) 排序
reverse() 反转数组中的元素
filter()筛选
concat()连接
slice()
第一个参数:规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)
第二个参数:规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)