Cette fois, je vais vous apporter un résumé de la façon d'utiliser watch dans Vue. Quelles sont les précautions lors de l'utilisation de watch dans Vue. Ce qui suit est un cas pratique, jetons un coup d'œil.
Supposons qu'il y ait le code suivant :
<p> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text" v-model="firstName"></p> </p> new Vue({ el: '#root', data: { firstName: 'Dawei', lastName: 'Lou', fullName: '' }, watch: { firstName(newName, oldName) { this.fullName = newName + ' ' + this.lastName; } } })
L'effet du code ci-dessus est que lorsque nous entrons firstName, wacth surveille la nouvelle valeur de chaque modification, puis calcule et affiche fullName .
Méthode de gestion et attribut immédiat
Une caractéristique de watch ici est qu'elle ne sera pas exécutée lorsqu'elle est initialement liée, et le calcul de surveillance ne sera pas exécuté tant que firstName ne changera pas. Et si nous voulons exécuter le changement lorsqu’il est initialement lié ? Nous devons modifier notre méthode d'écriture de surveillance. Le code de surveillance modifié est le suivant :
watch: { firstName: { handler(newName, oldName) { this.fullName = newName + ' ' + this.lastName; }, // 代表在wacth里声明了firstName这个方法之后立即先去执行handler方法 immediate: true } }
Avez-vous remarqué le gestionnaire ? Nous avons lié une méthode de gestionnaire à firstName. par défaut. C'est le gestionnaire, Vue.js gérera cette logique, et la version finale compilée est en fait ce gestionnaire.
Et immédiat : true signifie que si firstName est déclaré dans wacth, la méthode du gestionnaire à l'intérieur sera exécutée immédiatement si elle est fausse, l'effet sera le même que notre précédent, et il ne sera pas exécuté. pendant la liaison.
attribut profond
Il existe également un attribut profond dans watch. La valeur par défaut est false, qui indique s'il faut surveiller en profondeur. Par exemple, il existe un attribut obj. dans nos données :
<p> <p>obj.a: {{obj.a}}</p> <p>obj.a: <input type="text" v-model="obj.a"></p> </p> new Vue({ el: '#root', data: { obj: { a: 123 } }, watch: { obj: { handler(newName, oldName) { console.log('obj.a changed'); }, immediate: true } } })
Lorsque nous sommes entrés dans la vue des données dans la zone de saisie pour modifier la valeur de obj.a, nous avons constaté qu'elle n'était pas valide. En raison des limitations du JavaScript moderne (et de la dépréciation d'Object.observe), Vue ne peut pas détecter l'ajout ou la suppression de propriétés d'objet. Étant donné que Vue effectue le processus de conversion getter/setter sur la propriété lors de l'initialisation de l'instance, la propriété doit exister sur l'objet de données pour que Vue la convertisse afin qu'elle soit réactive.
Par défaut, le gestionnaire surveille uniquement les modifications dans la référence de l'attribut obj. Il ne surveillera les modifications que lorsque nous attribuons une valeur à obj. Par exemple, lorsque nous utilisons le monté <.> événement Réaffecter obj dans la fonction hook :
mounted: { this.obj = { a: '456' } }
watch: { obj: { handler(newName, oldName) { console.log('obj.a changed'); }, immediate: true, deep: true } }
chaîne pour surveiller.
watch: { 'obj.a': { handler(newName, oldName) { console.log('obj.a changed'); }, immediate: true, // deep: true } }
Résumé de l'utilisation du module de journal nodejs winston
opération vue+vue-router+vuex autorisations
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!