Vue Computed属性是Vue中一种特殊的属性,它的值是根据它的依赖属性计算得出的,它可以替代普通属性,让代码更加简洁。Computed属性的实现原理是Vue将Computed属性当做一个依赖,当依赖的属性发生变化时,Vue会自动触发Computed属性的重新计算,从而更新它的值。
使用方法
Vue Computed属性的使用方法非常简单,只需要在Vue实例中定义一个computed属性,并且指定它的getter函数即可。
// 定义一个Vue实例 var vm = new Vue({ data: { message: 'Hello World' }, computed: { reversedMessage: function () { return this.message.split('').reverse().join('') } } })
在上面的例子中,我们定义了一个computed属性reversedMessage,它的值是message属性的字符串翻转,我们可以通过vm.reversedMessage访问它的值,它的值会自动更新,当message属性发生变化时。
除了指定getter函数,Vue还支持指定setter函数,当我们给computed属性赋值时,setter函数会被调用,我们可以在setter函数中更新依赖的属性,从而更新computed属性的值。
// 定义一个Vue实例 var vm = new Vue({ data: { message: 'Hello World' }, computed: { reversedMessage: { get: function () { return this.message.split('').reverse().join('') }, set: function (newValue) { this.message = newValue.split('').reverse().join('') } } } })
实现原理
Vue Computed属性的实现原理是Vue将Computed属性当做一个依赖,当依赖的属性发生变化时,Vue会自动触发Computed属性的重新计算,从而更新它的值。
Vue在初始化实例时,会把computed属性转换成一个计算属性watcher,该watcher会被加入到依赖的属性的依赖列表中,当依赖的属性发生变化时,Vue会通知该watcher,从而触发它的计算函数,重新计算computed属性的值,并更新它的值。
Vue还会对computed属性进行缓存,当computed属性的依赖属性没有发生变化时,Vue会直接返回它的缓存值,从而提高性能。
Vue Computed属性是Vue中一种特殊的属性,它的值是根据它的依赖属性计算得出的,它可以替代普通属性,让代码更加简洁。Computed属性的实现原理是Vue将Computed属性当做一个依赖,当依赖的属性发生变化时,Vue会自动触发Computed属性的重新计算,从而更新它的值,Vue还会对computed属性进行缓存,当computed属性的依赖属性没有发生变化时,Vue会直接返回它的缓存值,从而提高性能。