Table des matières
watchEffect listening
watchEffect 侦听器使用
watchEffect 监听基本数据
watchEffect 监听复杂数据
watchEffect 啥时候执行
Maison interface Web Voir.js Comment utiliser l'écouteur watchEffect dans Vue3

Comment utiliser l'écouteur watchEffect dans Vue3

May 11, 2023 pm 01:58 PM
vue3 watcheffect

watchEffect listening

En fait, je pense que ce truc est inutile, alors ne l'utilisez pas, hahahahaha !

Comment dire, vous pouvez comprendre que les fonctions de watch et watchEffect sont les mêmes.

watch : affiche la source de dépendance spécifiée et exécute la fonction de rappel lorsque la source de dépendance est mise à jour.
watchEffect : collecte automatiquement les sources de dépendance et se réexécute lorsque les sources de dépendance sont mises à jour. watch:显示指定依赖源,依赖源更新时执行回调函数。
watchEffect:自动收集依赖源,依赖源更新时候重新执行自身。

  • watchEffect 如果存在的话,组件初始化的时候就会自动自行一次,不需要像 watch 一样设置立即执行。

  • watch 每次回调之后是可以获取到最新值和上一次的老值,但是 watchEffect 是拿不到的。

  • watchEffect 不需要指定监听的属性,他会自动进行依赖收集,只要我们回调中使用了响应式的属性,那么这些属性在变更之后这个回调都会执行,不像 watch 只能监听指定的属性。

  • 使用的时候也是需要引入。

  • 记住一点哈, watch 可以代替 watchEffect,但是 watchEffect 不能替代 watch。

总结:能用 watch 就不要用 watchEffect。

watchEffect 侦听器使用

首先我们写一个简单的 watchEffect 侦听器。

<template>
  <div>
    <h2>{{name}}</h2>
    <button @click="btn">修改name</button>
  </div>
</template>

<script>
import { ref, watchEffect } from "vue";
export default {
  name: "App",
  setup() {
    const name = ref("我是????????.");

    function btn() {
      name.value = "????????.";
    }

    const res = watchEffect(() => {
      console.log("watchEffect 执行了");
    });

    return { name, btn };
  }
};
</script>
Copier après la connexion

记住 watchEffect 使用也是需要先引入的,不然不好使哈,然后我们保存上面的代码,然后刷新页面看一下执行结果。

我们发现哈,我们一刷新页面,控制台直接打印了我们输出的内容,所以说呢,watchEffect 组件一加载完就会执行。

watchEffect 监听基本数据

我们看到,watchEffect 使用的时候并没有设置监听哪个参数,只有一个回调函数,因为他会自动进行依赖收集,只要我们回调中使用了响应式的属性,那么这些属性在变更之后这个回调都会执行。

比如我们监听 name 的情况。

<template>
  <div>
    <h2>{{name}}</h2>
    <button @click="btn">修改name</button>
  </div>
</template>

<script>
import { ref, watchEffect } from "vue";
export default {
  name: "App",
  setup() {
    const name = ref("我是????????.");

    function btn() {
      name.value = "????????.";
    }

    const res = watchEffect(() => {
      console.log(name.value);
    });

    return { name, btn };
  }
};
</script>
Copier après la connexion

我们在回调函数打印一下 name 的值。

watchEffect 监听复杂数据

上面的案例是用来监听一个基本数据,如果监听一个对象呢?

其实也是一样的哈。

<template>
  <div>
    <h2>{{boy.age}}</h2>
    <button @click="boy.age++">修改name</button>
  </div>
</template>

<script>
import { ref, watchEffect, reactive } from "vue";
export default {
  name: "App",
  setup() {
    const boy = reactive({
      name: "我是????????.",
      age: 10
    });

    const res = watchEffect(() => {
      console.log(boy.age);
    });

    return { boy };
  }
};
</script>
Copier après la connexion

上边代码呢,一个按钮,每次点击让 boy 对象里面的 age 加一操作,然后监听一下 age 的新值

可以看到是完全没有问题的哈!

watchEffect 啥时候执行

上边说过了哈,只要我们回调中使用了响应式的属性,那么这些属性在变更之后这个回调都会执行,不像 watch 只能监听指定的属性。

啥意思呢,简单理解一下,就是回调里面使用了的话他就执行,没用他就不执行。

就像上面的案例,修改 age 的时候,我们在回调里面打印了 age,在回调里面涉及到 age 了,他就会执行,如果我们这次不使用改变的 age,只打印一句话,看一下能不能执行回调哈。

<template>
  <div>
    <h2>{{boy.age}}</h2>
    <button @click="boy.age++">修改name</button>
  </div>
</template>

<script>
import { ref, watchEffect, reactive } from "vue";
export default {
  name: "App",
  setup() {
    const boy = reactive({
      name: "我是????????.",
      age: 10
    });

    const res = watchEffect(() => {
      console.log("执行了");
    });

    return { boy };
  }
};
</script>
Copier après la connexion

刷新保存,点击按钮修改 age 的值,看一下控制台有没有打印 执行了

  • watchEffect S'il existe, le composant s'exécutera automatiquement une fois lors de son initialisation. Il n'est pas nécessaire de le configurer immédiatement. exécution comme montre.

  • watch Après chaque rappel, vous pouvez obtenir la dernière valeur et la dernière ancienne valeur, mais watchEffect ne peut pas l'obtenir.

  • watchEffect n'a pas besoin de spécifier les attributs surveillés, il collectera automatiquement les dépendances. Tant que nous utilisons des attributs réactifs dans le rappel, ces attributs seront modifiés après le rappel. Exécution de rappel, contrairement à watch qui ne peut surveiller que les propriétés spécifiées.

  • doit également être introduit lors de son utilisation.

  • N'oubliez pas que watch peut remplacer watchEffect, mais watchEffect ne peut pas remplacer watch.

Résumé : N'utilisez pas watchEffect si vous pouvez utiliser watch.

utilisation de l'écouteur watchEffect#🎜🎜##🎜🎜#Nous écrivons d'abord un simple écouteur watchEffect. #🎜🎜#
    const res = watchEffect(() => {
      console.log(boy.age);
    });
Copier après la connexion
#🎜🎜# N'oubliez pas que watchEffect doit être introduit en premier, sinon il sera difficile à utiliser. Ensuite, nous enregistrons le code ci-dessus, puis actualisons la page pour voir les résultats de l'exécution. #🎜🎜##🎜🎜#Nous avons constaté que dès que nous actualisons la page, la console imprime directement le contenu que nous produisons, donc le composant watchEffect sera exécuté dès qu'il sera chargé. #🎜🎜##🎜🎜#watchEffect surveille les données de base#🎜🎜##🎜🎜#Nous voyons que lorsque watchEffect est utilisé, il ne définit pas les paramètres à surveiller, seulement une fonction de rappel, car il collectera automatiquement les dépendances, comme tant que nous Si des propriétés réactives sont utilisées dans le rappel, le rappel sera exécuté une fois ces propriétés modifiées. #🎜🎜##🎜🎜#Par exemple, lorsque nous surveillons le nom. #🎜🎜#
res()  // 关闭
Copier après la connexion
#🎜🎜#Nous imprimons la valeur du nom dans la fonction de rappel. #🎜🎜##🎜🎜#watchEffect Surveillance de données complexes #🎜🎜##🎜🎜#Le cas ci-dessus est utilisé pour surveiller une donnée de base. Et s'il surveillait un objet ? #🎜🎜##🎜🎜#En fait, c'est pareil. #🎜🎜#


<script>
import { ref, watchEffect, reactive } from "vue";
export default {
  name: "App",
  setup() {
    const boy = reactive({
      name: "我是????????.",
      age: 10
    });

    const res = watchEffect(() =&gt; {
      console.log(boy.age);
    });

    res()  // 关闭监听

    return { boy };
  }
};
</script>
Copier après la connexion
#🎜🎜#Comme pour le code ci-dessus, un bouton en ajoute un à l'âge dans l'objet garçon à chaque fois que l'on clique dessus, puis surveille la nouvelle valeur de l'âge#🎜🎜##🎜🎜#Vous pouvez voir qu'il n'y a pas de problème ! #🎜🎜##🎜🎜#watchEffect Quand exécuter #🎜🎜##🎜🎜#Comme mentionné ci-dessus, tant que nous utilisons des attributs réactifs dans le rappel, ces attributs seront exécutés une fois le rappel modifié, contrairement à watch peut surveiller uniquement les propriétés spécifiées. #🎜🎜##🎜🎜#Qu'est-ce que cela signifie ? Pour le comprendre simplement, s'il est utilisé dans le callback, il sera exécuté. S'il n'est pas utilisé, il ne sera pas exécuté. #🎜🎜##🎜🎜#Tout comme le cas ci-dessus, lorsque nous modifions l'âge, nous imprimons l'âge dans le rappel. Si l'âge est impliqué dans le rappel, il sera exécuté si nous n'utilisons pas l'âge modifié. cette fois, imprimez simplement une phrase et voyez si le rappel peut être exécuté. #🎜🎜#rrreee#🎜🎜#Actualisez et enregistrez, cliquez sur le bouton pour modifier la valeur de l'âge, et voyez si les trois mots Exécuté sont imprimés sur la console. #🎜🎜##🎜🎜# Comprenez-vous cette phrase ? Savez-vous quand il a été exécuté ? D'ACCORD. #🎜🎜##🎜🎜#Désactiver la surveillance watchEffect#🎜🎜##🎜🎜#Supposons que nous commencions à utiliser la surveillance watchEffect, mais que dois-je faire si je ne veux pas qu'elle surveille maintenant ? C'est en fait super simple. #🎜🎜#rrreee#🎜🎜#N'avons-nous pas créé un écouteur watchEffect ci-dessus ? Pour fermer, il vous suffit de l'appeler une seule fois et il sera fermé. #🎜🎜#rrreee#🎜🎜#Voir le code spécifique ci-dessous. #🎜🎜#rrreee#🎜🎜#Enregistrez-le et cliquez sur le bouton pour voir l'effet. #🎜🎜#

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

vue3+vite : Comment résoudre l'erreur lors de l'utilisation de require pour importer dynamiquement des images dans src vue3+vite : Comment résoudre l'erreur lors de l'utilisation de require pour importer dynamiquement des images dans src May 21, 2023 pm 03:16 PM

vue3+vite:src utilise require pour importer dynamiquement des images et des rapports d'erreurs et des solutions. vue3+vite importe dynamiquement plusieurs images. Si vue3 est développé à l'aide de TypeScript, il y aura un message d'erreur indiquant que requireisnotdefined ne peut pas être utilisé comme imgUrl. :require(' .../assets/test.png') est importé car TypeScript ne prend pas en charge require, donc l'importation est utilisée. Voici comment le résoudre : utilisez waitimport.

Comment utiliser tinymce dans le projet vue3 Comment utiliser tinymce dans le projet vue3 May 19, 2023 pm 08:40 PM

tinymce est un plug-in d'éditeur de texte riche entièrement fonctionnel, mais l'introduction de tinymce dans vue n'est pas aussi fluide que les autres plug-ins de texte riche de Vue. tinymce lui-même ne convient pas à Vue, et @tinymce/tinymce-vue doit être introduit, et Il s'agit d'un plug-in de texte riche étranger et n'a pas passé la version chinoise. Vous devez télécharger le package de traduction depuis son site officiel (vous devrez peut-être contourner le pare-feu). 1. Installez les dépendances associées npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. Téléchargez le package chinois 3. Introduisez le skin et le package chinois Créez un nouveau dossier tinymce dans le dossier public du projet et téléchargez le.

Comment Vue3 analyse le démarque et implémente la mise en évidence du code Comment Vue3 analyse le démarque et implémente la mise en évidence du code May 20, 2023 pm 04:16 PM

Pour implémenter le front-end du blog avec Vue, vous devez implémenter l'analyse markdown. S'il y a du code, vous devez implémenter la mise en évidence du code. Il existe de nombreuses bibliothèques d'analyse de démarques pour Vue, telles que markdown-it, vue-markdown-loader, Markdown, vue-markdown, etc. Ces bibliothèques sont toutes très similaires. Marked est utilisé ici et highlight.js est utilisé comme bibliothèque de mise en évidence du code. Les étapes d'implémentation spécifiques sont les suivantes : 1. Installez les bibliothèques dépendantes. Ouvrez la fenêtre de commande sous le projet vue et entrez la commande suivante npminstallmarked-save//marked pour convertir le markdown en htmlnpmins.

Comment actualiser le contenu partiel de la page dans Vue3 Comment actualiser le contenu partiel de la page dans Vue3 May 26, 2023 pm 05:31 PM

Pour réaliser un rafraîchissement partiel de la page, il suffit d'implémenter le re-rendu du composant local (dom). Dans Vue, le moyen le plus simple d'obtenir cet effet est d'utiliser la directive v-if. Dans Vue2, en plus d'utiliser l'instruction v-if pour restituer le dom local, nous pouvons également créer un nouveau composant vierge. Lorsque nous devons actualiser la page locale, accéder à cette page de composant vierge, puis y revenir. la garde beforeRouteEnter dans la page d’origine vierge. Comme le montre la figure ci-dessous, comment cliquer sur le bouton d'actualisation dans Vue3.X pour recharger le DOM dans la zone rouge et afficher l'état de chargement correspondant. Puisque la garde dans le composant dans la syntaxe scriptsetup dans Vue3.X n'a ​​que o

Comment utiliser les composants réutilisables Vue3 Comment utiliser les composants réutilisables Vue3 May 20, 2023 pm 07:25 PM

Préface Que ce soit vue ou réagir, lorsque nous rencontrons plusieurs codes répétés, nous réfléchirons à comment réutiliser ces codes, au lieu de remplir un fichier avec un tas de codes redondants. En fait, Vue et React peuvent être réutilisés en extrayant des composants, mais si vous rencontrez quelques petits fragments de code et que vous ne souhaitez pas extraire un autre fichier, en comparaison, React peut être utilisé dans le même Déclarez le widget correspondant dans le fichier. , ou implémentez-le via la fonction de rendu, telle que : constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(

Comment utiliser definitionCustomElement pour définir des composants dans Vue3 Comment utiliser definitionCustomElement pour définir des composants dans Vue3 May 28, 2023 am 11:29 AM

Utilisation de Vue pour créer des éléments personnalisés WebComponents est un nom collectif pour un ensemble d'API Web natives qui permettent aux développeurs de créer des éléments personnalisés réutilisables (customelements). Le principal avantage des éléments personnalisés est qu’ils peuvent être utilisés avec n’importe quel framework, même sans. Ils sont idéaux lorsque vous ciblez des utilisateurs finaux susceptibles d'utiliser une pile technologique frontale différente, ou lorsque vous souhaitez dissocier l'application finale des détails d'implémentation des composants qu'elle utilise. Vue et WebComponents sont des technologies complémentaires et Vue offre un excellent support pour l'utilisation et la création d'éléments personnalisés. Vous pouvez intégrer des éléments personnalisés dans des applications Vue existantes ou utiliser Vue pour créer

Comment utiliser Vue3 et Element Plus pour implémenter l'importation automatique Comment utiliser Vue3 et Element Plus pour implémenter l'importation automatique May 22, 2023 pm 04:58 PM

1 Introduction 1.1 Objectif ElementPlus utilise l'introduction à la demande pour réduire considérablement la taille du fichier empaqueté. 1.2 L'effet final est de générer automatiquement le fichier composants.d.ts et de l'introduire dans le fichier. d.ts et introduisez-le dans le fichier ElementPlusAPI2 Préparation Installer ElementPlus#Choisissez un gestionnaire de packages que vous aimez#NPM$npminstallelement-plus--save#Yarn$yarnaddelement-plus#pnpm$pnpminstallelement-plus3 Appuyez sur.

Comment sélectionner un avatar et le recadrer dans Vue3 Comment sélectionner un avatar et le recadrer dans Vue3 May 29, 2023 am 10:22 AM

L'effet final est d'installer le composant VueCropper filaddvue-cropper@next. La valeur d'installation ci-dessus est pour Vue3 ou si vous souhaitez utiliser d'autres méthodes de référence, veuillez visiter son adresse officielle npm : tutoriel officiel. Il est également très simple de le référencer et de l'utiliser dans un composant. Il suffit d'introduire le composant correspondant et son fichier de style. Je ne le référence pas globalement ici, mais j'introduis uniquement import{userInfoByRequest}from'../js/api. ' dans mon fichier de composant import{VueCropper}from'vue-cropper&.

See all articles