Vue 指令整理

Vue 的指令你知道多少?

1、v-text

更新元素的 textContent(不会解析h5标签)。

示例:

<span v-text="msg"></span>
<!-- 和下面的一样 -->
<span>{
   
   {msg}}</span>

2、v-html

更新元素的 innerHTML。v-html 内的标签属性将会被解析,但在单文件组件里,scoped 的样式将不会应用,因为那部分 HTML 没有被 Vue 的模板编译器处理。

在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。只在可信内容上使用 v-html,永不用在用户提交的内容上。

示例:

<!-- html:'<h3>内容</h3>' -->
<div v-html="html"></div>
<!-- 编译为 -->
<div>
	<h3>内容</h3>
</div>

3、v-show

条件渲染,根据条件显示或隐藏元素(切换元素的 display CSS property)。可配合<transition>在条件变化时该指令触发过渡效果。

示例:

<div v-show="isShow">当isShow表达式为真时我显示</div>

4、v-if

条件渲染,根据条件插入或移除元素,可配合<transition>在条件变化时该指令触发过渡效果。

示例:

<div v-if="isShow">当isShow表达式为真时我会被渲染</div>

5、v-else-if and v-else

v-else-if 和 v-else 都是用来配合 v-if 做条件渲染所以就放一起讲,他们的关系就和js中的 if、else if、else 差不多。

扫描二维码关注公众号,回复: 16564104 查看本文章

v-else-if 的前一兄弟元素必须有 v-if 或 v-else-if。
v-else 的前一兄弟元素必须有 v-if 或 v-else-if。

示例:

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

6、v-for

基于源数据多次渲染元素或模板块。在开发中一般用于遍历数组或对象。

示例:

<!-- 遍历数组 -->
<div v-for="(item, index) in items">
  {
   
   { item }}
</div>

<!-- 遍历对象 -->
<div v-for="(item, key, index) in items">
  {
   
   { item.xxx }}
</div>

<!-- key和index不需要时可省略 -->

在vue2,当和 v-if 一起使用时,v-for 的优先级比 v-if 更高,所以会造成 v-for 每一项都进行 if 判断,影响性能。

7、v-on

绑定事件监听器。可缩写为 @,在使用时可以配合修饰符

示例:

<!-- click事件绑定 -->
<button v-on:click="handleClick"></button>

<!-- 动态事件缩写 (2.6.0+) -->
<button @[event]="handleClick"></button>

8、v-bind

属性绑定 或 父组件 props传值(动态地绑定一个或多个 attribute,或一个组件 prop 到表达式)。可缩写为 :

示例:

<!-- 绑定一个 attribute -->
<img :src="imageSrc">

<!-- 动态 attribute 名缩写 (2.6.0+) -->
<button :[key]="value"></button>

9、v-model

在表单控件或者组件上创建双向绑定。
v-model可用修饰符:
(1) .lazy
v-model默认在input时同步数据,可通过添加 lazy修饰符,转为在change事件同步

(2) .number
自动将输入值转为数值类型,如果这个值无法被 parseFloat() 解析,则会返回原始的值。

(3) .trim
自动过滤用户输入的首尾空白字符

示例:

<!-- 同步表单输入值 和 inputValue -->
<input v-model.lazy="inputValue" />

10、v-slot

提供具名插槽或需要接收 prop 的插槽。可缩写为#

更多的可以去看 vue 插槽的相关知识。

11、v-pre

跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。

示例:

<span v-pre>{
   
   { this will not be compiled }}</span>
<!-- 该span不经过vue模板解析,结果为 
	<span>{
    
    { this will not be compiled }}</span>
 -->

12、v-cloak

这个指令保持在元素上直到关联实例结束编译。可用来指定该元素在实例结束编译前的样式。一般和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

示例:

[v-cloak] {
    
    
  display: none;
}
<div v-cloak>
  {
   
   { message }}
</div>

该元素将不会显示,直到编译结束。

13、v-once

只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

示例:

<span v-once>This will never change: {
   
   {msg}}</span>

再首次渲染完成后,修改msg不会更新span内容

猜你喜欢

转载自blog.csdn.net/weixin_44646763/article/details/126280455