如何更好地理解 Vue 3 watch 侦听器的用法

🤍 前端开发工程师、技术日更博主、已过CET6

🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1

🕠 牛客 高级专题作者、打造专栏《前端面试必备》《2024面试高频手撕题》

🍚 蓝桥云课 签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》《带你从入门到实战全面掌握 uni-app》

文章目录

标题:🕵️‍♀️

摘要:

本文将介绍Vue 3中watch侦听器的多种用法和案例,以及它在实际开发中的应用。

引言:

在Vue 3中,watch侦听器用于监听数据的变化,并在数据变化时执行相应的操作。了解watch侦听器的用法和案例对于Vue开发者来说具有重要意义。

正文:

1. watch的基本用法🔧

在 Vue 3 中,watch 函数是一个非常有用的工具,用于在数据变化时执行一些操作。以下是一些基本的用法:

  1. 创建一个 refreactive 对象来存储需要监听的数据。
javascript 复制代码
import { ref, watch } from 'vue';

export default {
  setup() {
    const count = ref(0);
    const message = ref('Hello, Vue 3!');

    // ...
  }
};
  1. 使用 watch 函数来监听数据的变化。watch 函数接收两个参数:一个是要监听的数据的引用,另一个是当数据发生变化时要调用的回调函数。
javascript 复制代码
import { ref, watch } from 'vue';

export default {
  setup() {
    const count = ref(0);
    const message = ref('Hello, Vue 3!');

    watch(count, (newValue, oldValue) => {
      console.log(`Count changed from ${oldValue} to ${newValue}`);
    });

    watch(message, (newValue, oldValue) => {
      console.log(`Message changed from ${oldValue} to ${newValue}`);
    });

    // ...
  }
};
  1. 如果需要在数据变化时执行异步操作,可以将回调函数设置为 async
javascript 复制代码
import { ref, watch } from 'vue';

export default {
  setup() {
    const count = ref(0);

    async function increment() {
      count.value++;
      await fetchData();
    }

    watch(count, async (newValue, oldValue) => {
      console.log(`Count changed from ${oldValue} to ${newValue}`);
    });

    // ...
  }
};
  1. 如果需要在数据变化时执行一个函数,但不需要记录旧值和新值,可以将第二个参数设置为 true
javascript 复制代码
import { ref, watch } from 'vue';

export default {
  setup() {
    const count = ref(0);

    function increment() {
      count.value++;
    }

    watch(count, increment, { deep: true });

    // ...
  }
};

这些示例展示了如何在 Vue 3 中使用 watch 函数来监听数据的变化。通过这些示例,你可以更好地理解 watch 函数的用法。

2. watch的多种用法🌟

watch侦听器具有多种用法,以下是一些常见的用法:

  • 监听基本数据类型:用于监听基本数据类型的变化;
  • 监听对象和数组:用于监听对象和数组的变化;
  • 监听函数:用于监听函数的变化;
  • 监听多个数据:用于同时监听多个数据的变化。

3. watch的案例🌐

在实际开发中,watch侦听器可以用于多种场景,以下是一些典型的案例:

  1. 使用 watch 侦听器监听数据变化,制作一个动态标题生成器
html 复制代码
<template>
  <div>
    <input v-model="title" placeholder="输入标题" />
    <h1>{{ title }}</h1>
  </div>
</template>

<script>
import { ref, watch } from 'vue';

export default {
  setup() {
    const title = ref('');

    watch(title, (newVal, oldVal) => {
      console.log(`标题从 "${oldVal}" 变为 "${newVal}"`);
    });

    return {
      title
    };
  }
};
</script>
  1. 使用 watch 侦听器监听数据变化,实现一个动态背景颜色切换器
html 复制代码
<template>
  <div :style="{ backgroundColor: bgColor }">
    <button @click="changeBgColor">切换背景颜色</button>
  </div>
</template>

<script>
import { ref, watch } from 'vue';

export default {
  setup() {
    const bgColor = ref('');

    watch(bgColor, (newVal, oldVal) => {
      console.log(`背景颜色从 "${oldVal}" 变为 "${newVal}"`);
    });

    function changeBgColor() {
      bgColor.value = bgColor.value === 'red' ? 'blue' : 'red';
    }

    return {
      bgColor,
      changeBgColor
    };
  }
};
</script>
  1. 使用 watch 侦听器监听数据变化,实现一个动态加载图片的标题
html 复制代码
<template>
  <div>
    <input v-model="imageUrl" placeholder="输入图片URL" />
    <img :src="imageUrl" alt="动态图片" />
  </div>
</template>

<script>
import { ref, watch } from 'vue';

export default {
  setup() {
    const imageUrl = ref('');

    watch(imageUrl, (newVal, oldVal) => {
      console.log(`图片URL从 "${oldVal}" 变为 "${newVal}"`);
    });

    return {
      imageUrl
    };
  }
};
</script>

这些示例展示了如何使用 Vue 3 的 watch 侦听器监听数据变化,实现动态标题生成器、动态背景颜色切换器和动态加载图片的标题。通过这些示例,你可以更好地理解 watch 侦听器的用法。

总结:

Vue 3中的watch侦听器用于监听数据的变化,并在数据变化时执行相应的操作。了解watch侦听器的多种用法和案例对于Vue开发者来说具有重要意义。掌握watch侦听器的使用可以帮助我们更高效地处理数据变化。

参考资料:

本文详细介绍了Vue 3中watch侦听器的多种用法和案例,以及它在实际开发中的应用。希望对您有所帮助。如有疑问或建议,请随时与我交流。📧🎉

相关推荐
Larcher23 分钟前
新手也能学会,100行代码玩AI LOGO
前端·llm·html
徐子颐36 分钟前
从 Vibe Coding 到 Agent Coding:Cursor 2.0 开启下一代 AI 开发范式
前端
小月鸭1 小时前
如何理解HTML语义化
前端·html
jump6801 小时前
url输入到网页展示会发生什么?
前端
诸葛韩信1 小时前
我们需要了解的Web Workers
前端
brzhang1 小时前
我觉得可以试试 TOON —— 一个为 LLM 而生的极致压缩数据格式
前端·后端·架构
yivifu2 小时前
JavaScript Selection API详解
java·前端·javascript
这儿有一堆花2 小时前
告别 Class 组件:拥抱 React Hooks 带来的函数式新范式
前端·javascript·react.js
十二春秋2 小时前
场景模拟:基础路由配置
前端
六月的可乐2 小时前
实战干货-Vue实现AI聊天助手全流程解析
前端·vue.js·ai编程