vue watch 深度监听

vue2文档:API — Vue.js

vue3文档:侦听器 | Vue.js

        watch 可以用来监听页面中的数据,但如果监听的源是对象数组,则使用深度监听,强制深度遍历源,以便在深度变更时触发回调。

一,监听

<template>
    <div>
        <h1>{{ sum }}</h1>
        <button @click="addSum">+1</button>
    </div>
</template>
<script>
export default {
    data() {
        return {
            sum: 18
        }
    },
    watch: {
        sum: function (newValue, oldValue) {
            console.log(newValue, oldValue);
        }
    },
    methods: {
        addSum() {
            this.sum = this.sum + 1
        }
    }
}
</script>

        普通用法,可以监听到sum的值。

二,深度监听

        但如果要监听对象或数组里的元素,上面的方法不能使用。需要加 deep 和 handler,给对象的每一个属性添加一个监听器。

<template>
    <div>
        <h1>{{ data.a }}</h1>
        <button @click="addA">+1</button>
    </div>
</template>
<script>
export default {
    data() {
        return {
            data: {
                a: 14,
                b: 16
            }
        }
    },
    watch: {
        data: {
            handler: function (newValue) {
                console.log(newValue);
            },
            deep: true
        }
    },
    methods: {
        addA() {
            this.data.a = this.data.a + 1
        }
    }
}
</script>

        深度监听将 deep 改为 true,代表是否进行深度监听,默认为 false,监听会一层层向下遍历,给对象的每一个属性都添加一个监听器。

        在 handler 中编写需要执行的代码。

        如果只想监听其中一个属性,这种方法会造成资源的浪费,因为给对象的每一个属性都添加了监听器,一次监听会得到对象中的所有属性。

只监听对象的某一属性

        可以将监听的属性用字符串的类型表示,这样只会监听对象其中的某一个属性。

<template>
    <div>
        <h1>{{ data.a }}</h1>
        <button @click="addA">+1</button>
    </div>
</template>
<script>
export default {
    data() {
        return {
            data: {
                a: 14,
                b: 16
            }
        }
    },
    watch: {
        'data.a': {
            handler: function (newValue) {
                console.log(newValue);
            },
            deep: true
        }
    },
    methods: {
        addA() {
            this.data.a = this.data.a + 1
        }
    }
}
</script>

相关推荐

  1. vue监视深度监视

    2024-03-31 05:08:07       37 阅读
  2. 深度学习中无监督学习

    2024-03-31 05:08:07       7 阅读
  3. 深度学习中的弱监督学习

    2024-03-31 05:08:07       8 阅读
  4. 深度学习中自监督学习

    2024-03-31 05:08:07       11 阅读
  5. 深度学习中的监督学习

    2024-03-31 05:08:07       10 阅读
  6. 数据库监控监听

    2024-03-31 05:08:07       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 05:08:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 05:08:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 05:08:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 05:08:07       18 阅读

热门阅读

  1. 知识碎片-docker初始化db,自动导入SQL

    2024-03-31 05:08:07       15 阅读
  2. Python之旅:你能学到什么?

    2024-03-31 05:08:07       16 阅读
  3. RPM与YUM

    RPM与YUM

    2024-03-31 05:08:07      13 阅读
  4. go通道使用案例

    2024-03-31 05:08:07       15 阅读
  5. PhpWord导入试题

    2024-03-31 05:08:07       14 阅读
  6. 解决Nginx常见问题的技术指南

    2024-03-31 05:08:07       16 阅读
  7. leetcode自练题目

    2024-03-31 05:08:07       19 阅读