Maison  >  Article  >  interface Web  >  Que sont les modificateurs dans Vue ? Résumé des modificateurs courants

Que sont les modificateurs dans Vue ? Résumé des modificateurs courants

青灯夜游
青灯夜游avant
2022-10-10 19:28:111965parcourir

Cet article vous donnera une brève compréhension des modificateurs dans Vue et résumera quelques modificateurs et méthodes d'écriture courants. J'espère qu'il sera utile à tout le monde.

Que sont les modificateurs dans Vue ? Résumé des modificateurs courants

1. Que sont les modificateurs

Dans Vue, les modificateurs gèrent de nombreux détails des événements DOM, de sorte que nous n'avons plus besoin de dépenser beaucoup de temps temps Vous avez moins de temps pour gérer ces choses ennuyeuses et vous pouvez avoir plus d'énergie pour vous concentrer sur le traitement logique du programme. [Recommandations associées : tutoriel vidéo vuejsVue中,修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间去处理这些烦恼的事情,而能有更多的精力专注于程序的逻辑处理。【相关推荐:vuejs视频教程

vue中修饰符分为以下五种:

  • 表单修饰符
  • 事件修饰符
  • 鼠标按键修饰符
  • 键值修饰符
  • v-bind修饰符

二、常见的修饰符

2.1 表单修饰符

在我们填写表单的时候用得最多的是input标签,指令用得最多的是v-model

关于表单的修饰符有如下:

  • lazy
  • trim
  • number

1. lazy

默认情况下,v-model 会在每次 input 事件后更新数据。你可以添加 lazy 修饰符来改为在每次 change 事件后更新数据:

<input type="text" v-model.lazy="value">
<p>{{value}}</p>

2. trim

如果你想要默认自动去除用户输入内容中两端的空格,你可以在 v-model 后添加 .trim 修饰符:

<input type="text" v-model.trim="value">

3. number

如果你想让用户输入自动转换为数字,你可以在 v-model 后添加 .number 修饰符来管理输入:

<input v-model.number="age" type="number">

2.2 事件修饰符

事件修饰符是对事件捕获以及目标进行了处理,有如下修饰符:

  • stop
  • prevent
  • self
  • once
  • capture
  • passive
  • native

1. stop

阻止了事件冒泡,相当于调用了event.stopPropagation方法,单击事件将停止传递

<div @click="shout(2)">
    <button @click.stop="shout(1)">ok</button> 
</div> 
//只输出1

2. prevent

阻止了事件的默认行为,相当于调用了event.preventDefault方法,提交事件将不再重新加载页面

<form @submit.prevent="onSubmit"></form>

3. self

仅当 event.target 是元素本身时才会触发事件处理器,例如:事件处理器不来自子元素

<div v-on:click.self="doThat">...</div>

使用修饰符时需要注意调用顺序,因为相关代码是以相同的顺序生成的。因此使用 @click.prevent.self 会阻止元素及其子元素的所有点击事件的默认行为而 @click.self.prevent 则只会阻止对元素本身的点击事件的默认行为。

4. once

绑定了事件以后只能触发一次,第二次就不会触发

<button @click.once="shout(1)">ok</button>

5. capture

添加事件监听器时,使用 capture 捕获模式,例如:指向内部元素的事件,在被内部元素处理前,先被外部处理。使事件触发从包含这个元素的顶层开始往下触发

<div @click.capture="shout(1)">
    obj1
<div @click.capture="shout(2)">
    obj2
<div @click="shout(3)">
    obj3
<div @click="shout(4)">
    obj4
</div>
</div>
</div>
</div>
// 输出结构: 1 2 4 3

6. passive

在移动端,当我们在监听元素滚动事件的时候,会一直触发onscroll事件会让我们的网页变卡,因此我们使用这个修饰符的时候,相当于给onscroll事件整了一个.lazy修饰符。

滚动事件的默认行为 (scrolling) 将立即发生而非等待 onScroll 完成,以防其中包含 event.preventDefault()

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>

.passive 修饰符一般用于触摸事件的监听器,可以用来改善移动端设备的滚屏性能

请勿同时使用 .passive 和 .prevent,因为 .passive 已经向浏览器表明了你不想阻止事件的默认行为。如果你这么做了,则 .prevent]

🎜 Les modificateurs dans vue sont divisés en cinq types : 🎜
  • Modificateurs de formulaire
  • Modificateurs d'événement
  • Modificateurs de bouton de souris
  • Modificateur de valeur clé
  • Modificateur v-bind

🎜2 Modificateurs communs🎜🎜

🎜2.1 Modificateurs de formulaire🎜

🎜La balise la plus couramment utilisée lorsque nous remplissons le formulaire est la balise input, et la commande la plus couramment utilisée est v-model🎜🎜Les modificateurs sur le formulaire sont les suivants : 🎜<ul> <li>lazy</li> <li>trim</li> <li>number</li> </ul>🎜1. paresseux🎜🎜Par défaut, <code>v-model sera mis à jour après chaque donnée d'événement input. Vous pouvez ajouter le modificateur lazy pour mettre à jour les données après chaque événement change : 🎜
<my-component v-on:click.native="doSomething"></my-component>

🎜 trim 🎜<.>🎜Si vous souhaitez supprimer automatiquement les espaces aux deux extrémités de la saisie utilisateur par défaut, vous pouvez ajouter le modificateur .trim après v-model : 🎜
<button @click.left="shout(1)">ok</button>
<button @click.right="shout(1)">ok</button>
<button @click.middle="shout(1)">ok</button>

🎜3. number🎜

🎜Si vous souhaitez que les entrées de l'utilisateur soient automatiquement converties en nombres, vous pouvez ajouter v-model >. modificateur de numéro pour gérer l'entrée : 🎜
// 只有按键为keyCode的时候才触发 
<input type="text" @keyup.keyCode="shout()">

🎜2.2 Modificateur d'événement🎜

🎜Le modificateur d'événement gère la capture et les cibles d'événements, a les modificateurs suivants : 🎜
  • arrêter
  • prévenir
  • soi
  • une fois
  • capturer
  • passif
  • native

🎜1. stop🎜

🎜 empêche la propagation d'événements, ce qui équivaut à event.stopPropagation code> est appelée et l'événement click arrêtera la livraison🎜<pre class="brush:php;toolbar:false">//父组件 &lt;comp :myMessage.sync=&quot;bar&quot;&gt;&lt;/comp&gt;  //子组件 this.$emit('update:myMessage',params);</pre> <h4 data-id="heading-9">🎜2 Prevent🎜</h4>🎜empêche le comportement par défaut de l'événement, ce qui équivaut à un appel. la méthode <code>event.preventDefault La soumission d'un événement ne rechargera plus la page🎜
//父亲组件
<comp :myMessage="bar" @update:myMessage="func"></comp>
func(e){
 this.bar = e;
}
//子组件js
func2(){
  this.$emit('update:myMessage',params);
}

🎜self🎜

🎜uniquement le gestionnaire d'événements. sera déclenché lorsque event.target est l'élément lui-même, par exemple : le gestionnaire d'événements ne provient pas d'un élément enfant🎜
<input id="uid" title="title1" value="1" :index.prop="index">
🎜Vous devez faire attention à l'ordre d'appel lorsque vous utilisez des modificateurs, car le code associé est généré dans le même ordre. Par conséquent, l'utilisation de @click.prevent.self empêchera le comportement par défaut de tous les événements de clic sur l'élément 🎜 et ses éléments enfants 🎜 tandis que @click.self.prevent empêchera uniquement événements de clic sur l'élément 🎜 et ses éléments enfants. Le comportement par défaut pour les événements de clic sur l'élément lui-même. 🎜

🎜4. une fois🎜

🎜Après avoir lié l'événement, il ne peut être déclenché qu'une seule fois, et il ne sera pas déclenché la deuxième fois🎜
<svg :viewBox="viewBox"></svg>
.

🎜5. capture🎜

🎜Lors de l'ajout d'un écouteur d'événement, utilisez le mode de capture capture, par exemple : les événements pointant vers des éléments internes sont traitées avant d'être traitées par les éléments internes, traitées en externe d'abord. Déclenchez l'événement du niveau supérieur contenant cet élément vers le bas🎜rrreee

🎜6 passif🎜

🎜Du côté mobile, lorsque nous écoutons l'événement scroll de. l'élément continuera à déclencher l'événement onscroll et bloquera notre page Web. Par conséquent, lorsque nous utilisons ce modificateur, cela équivaut à ajouter un .lazy au <code>onscroll<.> événement </.>modificateur. 🎜🎜Le comportement par défaut des événements de défilement (scrolling) se produira immédiatement au lieu d'attendre la fin de onScroll, au cas où il contiendrait event.preventDefault()🎜rrreee🎜.passive Les modificateurs sont généralement utilisés pour les écouteurs d'événements tactiles et peuvent être utilisés Améliorer les performances de défilement des appareils mobiles🎜. 🎜
🎜N'utilisez pas .passive et .prevent en même temps, car .passive a déjà indiqué au navigateur que vous ne voulez pas Le comportement par défaut des événements bloquants. Si vous faites cela, .prevent sera ignoré et le navigateur lancera un avertissement. 🎜

7. native

让组件变成像html内置标签那样监听根元素的原生事件,否则组件上使用 v-on 只会监听自定义事件

<my-component v-on:click.native="doSomething"></my-component>

使用.native修饰符来操作普通HTML标签是会令事件失效的

2.3 鼠标按钮修饰符

鼠标按钮修饰符针对的就是左键、右键、中键点击,有如下:

  • left 左键点击
  • right 右键点击
  • middle 中键点击
<button @click.left="shout(1)">ok</button>
<button @click.right="shout(1)">ok</button>
<button @click.middle="shout(1)">ok</button>

2.4 键盘修饰符

键盘修饰符是用来修饰键盘事件(onkeyuponkeydown)的,有如下:

keyCode存在很多,但vue为我们提供了别名,分为以下两种:

  • 普通键(enter、tab、delete、space、esc、up...)
  • 系统修饰键(ctrl、alt、meta、shift...)
// 只有按键为keyCode的时候才触发 
<input type="text" @keyup.keyCode="shout()">

2.5 v-bind修饰符

v-bind修饰符主要是为属性进行操作,用来分别有如下:

  • async
  • prop
  • camel

1. async

能对props进行一个双向绑定

//父组件
<comp :myMessage.sync="bar"></comp> 
//子组件
this.$emit('update:myMessage',params);

以上这种方法相当于以下的简写

//父亲组件
<comp :myMessage="bar" @update:myMessage="func"></comp>
func(e){
 this.bar = e;
}
//子组件js
func2(){
  this.$emit('update:myMessage',params);
}

使用async需要注意以下两点:

  • 使用sync的时候,子组件传递的事件名格式必须为update:value,其中value必须与子组件中props中声明的名称完全一致
  • 注意带有 .sync 修饰符的 v-bind 不能和表达式一起使用
  • 将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=”{ title: doc.title }”,是无法正常工作的

2. props

设置自定义标签属性,避免暴露数据,防止污染HTML结构

<input id="uid" title="title1" value="1" :index.prop="index">

3. camel

将命名变为驼峰命名法,如将 view-Box属性名转换为 viewBox

<svg :viewBox="viewBox"></svg>

三、应用场景

根据每一个修饰符的功能,我们可以得到以下修饰符的应用场景:

  • .stop:阻止事件冒泡
  • .native:绑定原生事件
  • .once:事件只执行一次
  • .self :将事件绑定在自身身上,相当于阻止事件冒泡
  • .prevent:阻止默认事件
  • .caption:用于事件捕获
  • .once:只触发一次
  • .keyCode:监听特定键盘按下
  • .right:右键

(学习视频分享:web前端开发编程基础视频

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer