computed 中get 和set 的功能

<template>
        <view>
            <view>{{ fullName }}</view>
        </view>
    </template>
    <script>
        export default {
            data() {
                return {
                    firstName: 'Foo',
                    lastName: 'Bar'
                }
            },
            computed: {
                fullName: {
                    // getter
                    get(){
                        return this.firstName + ' ' + this.lastName
                    },
                    // setter
                    set(newValue){
                        var names = newValue.split(' ')
                        this.firstName = names[0]
                        this.lastName = names[names.length - 1]
                    }
                },
        computedClassStr () {
            return this.isActive ? 'active' ''
          },
                               now(){
              return Date.now()
         }
            }
        }
    </script>

  上述例子可比较computed有get set与无get set的区别

总结:

  • get:通过设置get方法可以得到fullName的新值。
  • set:通过set的方法,设置一个值(newValue)来改变fullName相关联的值,引起fullName重新的计算,相应的页面上fullName也会发生改变成新的内容。

 

计算属性是基于它们的响应式依赖进行缓存的。

只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

例子中计算属性now将不再更新,因为 Date.now() 不是响应式依赖。

posted @ 2021-01-04 14:29  呱呱呱呱坠地  阅读(1742)  评论(0)    收藏  举报