vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue3 watchEffect高级侦听器

Vue3中watchEffect高级侦听器的具体使用

作者:Unique·Blue

Vue3中新增了一种特殊的监听器watchEffect,本文主要介绍了Vue3中watchEffect高级侦听器的具体使用,具有一定的参考价值,感兴趣的可以了解一下

示例均采用 <script setup>,且包含 typescript 的基础用法

前言

Vue3 中新增了一种特殊的监听器 watchEffect,它的类型是:

function watchEffect(
  effect: (onCleanup: OnCleanup) => void,
  options?: WatchEffectOptions
): StopHandle

下面通过实例来理解下它的用法

一、简单使用

<input type="text" v-model="message1" />
<br />
<input type="text" v-model="message2" />
<br />
import { ref, watchEffect } from "vue";

const message1 = ref<string>("飞机");
const message2 = ref<string>("火车");

watchEffect(() => {
  console.log("message1========>,", message1);
  // 不使用 message2 就不会监听 message2
  // console.log("message2========>,", message2);
});

二、副作用 effect 的参数

<input type="text" v-model="message1" />
<br />
<input type="text" v-model="message2" />
<br />
import { ref, watchEffect } from "vue";

const message1 = ref<string>("飞机");
const message2 = ref<string>("火车");

watchEffect((onCleanup) => {
  console.log("message11111========>,", message1);
  console.log("message22222========>,", message2);

  onCleanup(() => {
    console.log("onCleanup —————— 下一次运行之前要做的事");
  });
});

页面刷新,首次打印:

在这里插入图片描述

更改输入框的值,再次打印:

在这里插入图片描述

三、watchEffect 返回值

<input type="text" v-model="message1" />
<br />
<input type="text" v-model="message2" />
<br />
<button @click="stopWatch">停止watchEffect</button>
const stop = watchEffect((onCleanup) => {
  console.log("message11111========>,", message1);
  console.log("message22222========>,", message2);

  onCleanup(() => {
    console.log("onCleanup —————— 下一次运行之前要做的事");
  });
});

const stopWatch = () => {
  stop();
};

页面刷新,首次打印:

在这里插入图片描述

更改输入框的值,再次打印:

点击按钮 停止侦听,再次打印:

四、options配置

watchEffect 的第二个参数是配置项:

<input id="ipt" v-model="iptVal" />
const iptVal = ref<string>("aa");

watchEffect(
  () => {
    // 测试 flush
    const spanEle = document.getElementById("ipt");
    // flush = pre 时,打印 null; flush = post 时,打印节点
    console.log("spanEle========>,", spanEle); 

    // 修改 iptVal 测试 onTrack、onTrigger
    console.log("iptVal============>", iptVal.value);
  },
  {
    flush: "post",
   	// 收集依赖时触发
    onTrack: () => {
      debugger;
    },
    // 更新时触发
    onTrigger: () => {
      debugger;
    },
  }
);

五、周边 api

到此这篇关于Vue3中watchEffect高级侦听器的具体使用的文章就介绍到这了,更多相关Vue3 watchEffect高级侦听器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文