watch监听

[复制链接]
发表于 2025-4-24 19:37:51 | 显示全部楼层 |阅读模式

虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。Vue通过watch选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的,在实际开发中可以解决自定义封装组件或是插件,异步初始化数据获取不到的问题。
看一样看watch基本用法,代码如下:

<input type="text" :value="name"/><button type="button" @click="name='李四'">改名</button>
<script>
    new Vue({
        el:"#app",
        data(){
            return {
                name:"张三"
            }
        },
        watch:{
            name(newVal,oldVal){
                console.log("更新后:"+newVal,"更新前:"+oldVal);
            }
        }
    })

</script>

image.png

如果出现对象嵌套,想改变对象里面的某一属性值时,可以这样写,代码如下:

<input type="text" :value="classify.children.title"/><button type="button" @click="classify.children.title='猪肉串'">更新</button>

new Vue({

        el:"#app",

        data(){

            return {

                classify:{

                    title:"肉类",

                    children:{

                        title:"羊肉串"

                    }

                }

            }

        },
watch:{

            "classify.children.title"(newVal,oldVal){

                console.log("更新后:"+newVal,"更新前:"+oldVal);

            }

        }

    })

深度监听

在实际开发中还会遇到数组多层嵌套,这时要用watch的深度监听功能,来监听数组的变化,代码如下:
watch:{
            classifys:{
                handler(val){
                    console.log(JSON.stringify(val));
                },
                deep:true//深度监听
            }
        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

GMT+8, 2025-9-5 18:22 , Processed in 0.091091 second(s), 35 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表