美文网首页
Vue watch、computed

Vue watch、computed

作者: Cherry丶小丸子 | 来源:发表于2024-03-24 21:43 被阅读0次
    watch
    var vm = new Vue({
        data: {
            a: 1,
            b: 2,
            c: 3,
            d: 4,
            e: {
                f: {
                    g: 5
                }
            }
        },
        watch: {
            a: function (val, oldVal) {
                console.log('new: %s, old: %s', val, oldVal)
            },
            // 方法名
            b: 'someMethod',
            // 该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深
            c: {
                handler: function (val, oldVal) { /* ... */ },
                deep: true
            },
            // 该回调将会在侦听开始之后被立即调用
            d: {
                handler: 'someMethod',
                immediate: true
            },
            // 你可以传入回调数组,它们会被逐一调用
            e: [
                'handle1',
                function handle2 (val, oldVal) { /* ... */ },
                {
                    handler: function handle3 (val, oldVal) { /* ... */ },
                    /* ... */
                }
            ],
            // watch vm.e.f's value: {g: 5}
            'e.f': function (val, oldVal) { /* ... */ }
        }
    })
    vm.a = 2 // => new: 2, old: 1
    

    注意,不应该使用箭头函数来定义 watcher 函数 (例如 searchQuery: newValue => this.updateAutocomplete(newValue))。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.updateAutocomplete 将是 undefined。

    computed
    var vm = new Vue({
        data: { a: 1 },
        computed: {
            // 仅读取
            aDouble: function () {
                return this.a * 2
            },
            // 读取和设置
            aPlus: {
                get: function () {
                    return this.a + 1
                },
                set: function (v) {
                    this.a = v - 1
                }
            }
        }
    })
    vm.aPlus   // => 2
    vm.aPlus = 3
    vm.a       // => 2
    vm.aDouble // => 4
    

    相关文章

      网友评论

          本文标题:Vue watch、computed

          本文链接:https://www.haomeiwen.com/subject/gddrtjtx.html