• vue3中的watch


    Vue3中,watch中的参数可以分为两部分,即要监听的响应式数据以及回调函数。

    语法格式如下:

    1. watch(要监听的响应式数据, 回调函数)

    除了以上的两个还有其他的参数

    • immediate:是否在初始化时立即执行一次回调函数,默认为false
    • deep:是否深度观察对象或数组的变化,默认为false
    • flush:在触发回调函数之前进行何种操作,默认为"pre"。可选值有:"pre"(立即更新DOM)、"post"(延迟到队列中的所有回调函数执行完毕后再更新DOM)和"sync"(在变更时同步应用更改)。
    • onTrigger:在触发回调函数之前执行的函数。
    • onStop:当停止观察时执行的函数。
    • lazy:是否初始不触发回调函数,默认为false

    参数说明:

    • 要监听的响应式数据:可以是一个ref对象、reactive对象或者计算属性等
    • 回调函数:当被监听的响应式数据发生变化时,回调函数会被调用,可以接受到被监听的数据的新值和旧值

    示例代码:

    1. import { reactive, watch } from 'vue'
    2. const state = reactive({
    3. count: 0
    4. })
    5. watch(() => state.count, (newValue, oldValue) => {
    6. console.log('count发生变化:', newValue, oldValue)
    7. })
    8. state.count++ // count发生变化: 1 0
    9. import { watch, ref, reactive } from 'vue';
    10. // 观察一个响应式对象
    11. const state = reactive({
    12. name: 'John',
    13. age: 25,
    14. });
    15. watch(() => state.name, (newValue, oldValue) => {
    16. console.log(`Name changed from ${oldValue} to ${newValue}`);
    17. });
    18. // 观察一个ref
    19. const count = ref(0);
    20. watch(() => count.value, (newValue, oldValue) => {
    21. console.log(`Count changed from ${oldValue} to ${newValue}`);
    22. });
    23. // 观察一个函数
    24. watch(
    25. () => {
    26. return state.age * count.value;
    27. },
    28. (newValue, oldValue) => {
    29. console.log(`Computed value changed from ${oldValue} to ${newValue}`);
    30. }
    31. );
    32. // 监听多个数据源
    33. watch([() => state.name, () => count.value], ([newName, newCount], [oldName, oldCount]) => {
    34. console.log(`Name changed from ${oldName} to ${newName}`);
    35. console.log(`Count changed from ${oldCount} to ${newCount}`);
    36. });
    37. // 配置项示例
    38. watch(
    39. () => state.name,
    40. (newValue, oldValue) => {
    41. console.log(`Name changed from ${oldValue} to ${newValue}`);
    42. },
    43. { immediate: true } // 立即执行回调函数
    44. );
    45. 值得注意的是,在Vue3中,watch函数返回一个stop函数,用于停止侦听。你可以使用stop函数来停止之前注册的watch:
    46. const stopWatcher = watch(() => state.name, (newValue, oldValue) => {
    47. console.log(`Name changed from ${oldValue} to ${newValue}`);
    48. });
    49. // 停止监听
    50. stopWatcher();
  • 相关阅读:
    链表oj (7.29)
    操作系统读者-写者问题中算是允许多个进程进入临界区吗
    如何使用 K3s 在您的开发机器上运行 Kubernetes 集群
    SSM+Vue+Element-UI实现大学生心理健康系统
    【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小-基础样例】
    Spark 3.0 - 7.LR 多分类实现影评预测电影评分与指标评测
    关于ASP.NET Core WebSocket实现集群的思考
    pytorch nn.utils.rnn.pack_padded_sequence 分析
    DNS域名解析服务
    公园气象站:用科技力量,感知气象变化
  • 原文地址:https://blog.csdn.net/m0_47999208/article/details/133385481