vue学习(14)深度监视

简介: vue学习(14)深度监视
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>天气案例-深度监视</title>
</head>

<body>
    <div id="root">
        <div>今天天气很{
   {
   info}}</div>
        <button @click="changeWeather">切换天气</button>
        <div>{
   {
   numbers.a }}</div>
        <button @click="numbers.a++">改变a的值</button>
        <div>{
   {
   numbers.b}}</div>
        <button @click="numbers.b++">改变b的值</button>
    </div>
    <script src="../js/vue.js"></script>
    <script type="text/javascript">
        Vue.config.productionTip = false;//阻止 vue 在启动时生成生产提示
        const vm = new Vue({
   
            el: '#root',
            data: {
   
                isHot: false,
                numbers: {
   
                    a: 1,
                    b: 1
                }
            },
            computed: {
   
                info() {
   
                    return this.isHot ? '炎热' : '凉爽';
                }
            },
            methods: {
   
                changeWeather() {
   
                    this.isHot = !this.isHot;
                }
            },
            watch: {
   
                //完整形式
                isHot: {
   
                    //初始化时,让handler调用一次
                    immediate: true,//默认是false
                    //handler什么时候调用?isHot发生改变的时候。
                    handler(newValue, oldValue) {
   
                        console.log('isHot被修改了', newValue, oldValue);
                    }
                },
                //简写形式
                isHot(newValue, oldValue){
   
                    console.log('isHot被修改了', newValue, oldValue);
                },
                //监听多级结构中所有属性的变化
                numbers:{
   
                    deep:true,
                    handler(){
   
                        console.log('numbers发生了变化');
                    }
                }
            }
        });
        //第二种写法
        vm.$watch('isHot', {
   
            //初始化时,让handler调用一次
            immediate: true,//默认是false
            //handler什么时候调用?isHot发生改变的时候。
            handler(newValue, oldValue) {
   
                console.log('isHot被修改了', newValue, oldValue);
            }
        });
        //第二种的简写形式
        vm.$watch('isHot',function(newValue, oldValue){
   
            console.log('isHot被修改了', newValue, oldValue);
        })
    </script>
</body>

</html>

知识点
1:vue中的watch默认不监测对象内部值的改变。(一层)
2:配置deep:true可以监测对象内部值的改变。(多层)
3:当watch中只需要一个handler函数,不需要其他的配置项的时候,可以使用简写。
备注:
1:使用watch时,根据数据的具体结构,决定是否采用深度监视。
2:vue自身可以监测对象内部值的改变,只是提供的watch默认不可以。

目录
相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
22 1
|
25天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
25天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1059 0
|
26天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
28天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
32 1
vue学习第一章
|
28天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
26 1
vue学习第三章
|
28天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章