• Vue watch computed和watch的区别


    Vue watch

    主要用于监听属性的变化,去做一些类似发送请求这样的工作
    可以拿到变化前后的属性值
    可以检测对象深层次属性以及是否在初始化就触发

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <script src="../lib/vue.js"></script>
    
    <body>
        <div id="root">
            <span>今天天气很{{info}}</span>
            <br>
            <button @click="toggleWeather">切换天气</button>
            <br>
            {{numbers.a}}
            <button @click="changeNumbers('a')">新增a</button>
        </div>
        <script>
            const weatherToggleMap = {
                hot: {
                    toggle: 'cold',
                    text: '炎热'
                },
                cold: {
                    toggle: 'hot',
                    text: '凉爽'
                }
            }
    
            const vm = new Vue({
                el: "#root",
                data: {
                    weather: 'hot',
                    // 深层属性
                    numbers: {
                        a: 1,
                        b: 2
                    }
                },
                methods: {
                    toggleWeather() {
                        this.weather = weatherToggleMap[this.weather]?.toggle
                    },
                    changeNumbers(tag) {
                        ++this.numbers[tag]
                    }
                },
                computed: {
                    info: function () {
                        return weatherToggleMap[this.weather]?.text
                    }
                },
                watch: {
                    weather: {
                        handler() {
                            console.log('weather change ...');
                        }
                    },
                    // 'numbers.a':{
                    //     handler(){
                    //         console.log('numbers change');
                    //     }
                    // },
                    numbers: {
                        handler(newValue, oldValue) {
                            console.log('numbers change');
                        },
                        // 初始化的时候执行一下
                        immediate: true,
                        // 深度监听
                        deep: true
                    }
                }
            })
    
            // vm.$watch('numbers', {
            //     handler(newValue, oldValue) {
            //         console.log('numbers change');
            //     },
            //     // 初始化的时候执行一下
            //     immediate: true,
            //     // 深度监听
            //     deep: true
            // })
        </script>
    </body>
    
    </html>
    

    watch和computed的区别

    computed有缓存
    computed能基于已有属性生成新属性,watch也能实现
    一般在watch中发异步请求

  • 相关阅读:
    冲刺(9)
    冲刺(8)
    冲刺(7)
    C#的post请求 捕获错误代码的内容
    [转载]Memory Limits for 32-bit and 64-bit processes
    IIS 503
    识别chrome浏览器
    时间同步
    修改Visual Studio启动画面授权信息
    Temporary ASP.NET Files权限问题
  • 原文地址:https://www.cnblogs.com/ltfxy/p/15854631.html
Copyright © 2020-2023  润新知