• 技术文章 >web前端 >前端问答

    vue中watch是什么属性

    青灯夜游青灯夜游2022-12-23 17:54:26原创176

    watch是监视属性。在vue中,可以通过watch属性来监视某个属性的变化,当这个属性发生变化时,可以执行一些操作:1、当监视属性所监视的属性发生变化的时候,回调函数就会自动调用,并且执行相关的操作;2、监视属性所监视的属性要存在,才能产生作用。监视属性有两种写法“new Vue({watch:{}})”和“vue实例化对象.$watch('属性名'回调函数)”。

    本教程操作环境:windows7系统、vue3版,DELL G3电脑。

    vue监视属性

    在开发中,我们会遇到这样一种情况,我们需要一个属性变化的时候,然后做出一些操作。而检测这个变化的属性,在vue中叫做监视属性。

    1.监视属性是什么

    在vue中,我们可以通过watch属性来监视某个属性的变化,当这个属性发生变化时,我们可以执行一些操作。

    我们这里用一个天气案例来解释什么是监视属性:

    首先html代码:

        <div id="app">
            <p>今天天气很{{info}}</p>
            <button v-on:click="change">切换天气</button>
        </div>

    接下来我们书写js代码:

        var vm = new Vue({
            el: "#app",
            data: {
                isHot: true,
            },
            computed: {
                info: function () {
                    return this.isHot ? "热" : "冷";
                }
            },
            methods: {
                change: function () {
                    this.isHot = !this.isHot;
                }
            },
            watch: {
                isHot: {
                    handler:function (newVal, oldVal) {
                        console.log("isHot属性发生了变化");
                    },
                }
            }
        });

    在代码里面的handler这个函数就是我们前面说的回调函数,当isHot属性发生变化的时候,这个函数就会自动调用。

    当然我们可以在idHot对象面添加一个属性:immediate,当此属性布尔值为真的时候,handler回调函数在初始化的时候就会调用一次。

        watch: {
            isHot: {
                handler:function (newVal, oldVal) {
                    console.log("isHot属性发生了变化");
                },
                immediate: true
            }
        }

    2.监视属性的写法

    监视属性有两种写法:

    这里的第一种写法上面我们已经展现过了,下面我们就展示一下第二种写法:

    这里我们假设vue的实例化对象为vm。

        vm.$watch('isHot',function (newVal, oldVal) {
            console.log("isHot属性发生了变化");
        });

    3.监视属性之深度监视

    前面我们实现的监视,只能监视vue实例data中直接的简单数据,要是遇到对象或者数组,就无法监视了。

    这样做的方法是vue为了提高效率,在vue监视属性中,默认只监视一层,如果要监视多层,就需要我们手动开启深度监视。

        watch: {
            isHot: {
                handler:function (newVal, oldVal) {
                    console.log("isHot属性发生了变化");
                },
                immediate: true,
                deep: true
            }
        }

    其中deep:true就开启了深度监视。 深度监视就是监视vue中data中的对象或者数组,当对象或者数组中的属性发生变化的时候,监视属性的回调函数就会自动调用。

    在vue中其实是可以检测对象内部值的变化,那为什么vue监视属性不默认开启深度监视呢?

    因为vue监视属性的回调函数是在数据发生变化的时候才会调用,如果开启深度监视,那么vue就要监视对象内部的所有属性,这样会大大降低vue的效率。

    在我们使用监视属性的时候,我们根据具体的业务需求,来判断要不要开启深度监视。【相关推荐:vuejs视频教程web前端开发

    以上就是vue中watch是什么属性的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:watch Vue
    上一篇:vue开发使用什么工具 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 如何使用vue中的watcher• vue中watch的用法实例(监听对象、数据联动)• 详解vue.js中watch的使用• 一文了解vue中watcher数据双向绑定原理(附代码)• 一文详解Vue中watch和watchEffect的区别
    1/1

    PHP中文网