uniapp computed是什么

1. 什么是computed

computed(计算属性)是Vue.js中一个十分重要的特性,它可以根据依赖的数据自动更新视图,避免了DOM操作和手动维护计算属性的繁琐过程。在使用Vue.js开发大型应用时,computed是必不可少的一个工具。

与methods不同,computed属性是基于依赖进行缓存的。也就是说,只有计算属性所依赖的数据发生变化才会触发computed的重新计算过程,否则直接返回之前的缓存结果。computed的这种缓存机制可以大大提高应用的性能。

2. 使用computed

2.1 基本用法

我们可以通过Vue实例的computed选项来定义一个计算属性。计算属性通过声明式的方式区分methods,这样我们就可以像访问普通属性一样去访问它,而不需要手动去调用一个方法。例如,我们可以用以下方式计算一个字符串的长度:

new Vue({

data: {

message: 'Hello Uniapp!'

},

computed: {

messageLength: function () {

return this.message.length

}

}

})

上述代码中,我们定义了一个computed属性messageLength,它的值就是this.message.length。可以看到,我们不需要通过methods来定义一个方法去计算字符串的长度,而是直接定义了一个有返回值的函数,并将它赋值给计算属性messageLength。

2.2 计算属性的依赖

当计算属性需要依赖多个数据属性时,我们可以直接在computed函数中访问这些属性,这样当这些属性变化时,计算属性也会相应地更新。例如:

new Vue({

data: {

firstname: '李',

lastname: '雷'

},

computed: {

fullName: function () {

return this.firstname + this.lastname

}

}

})

上述代码中,我们定义了一个计算属性fullName,它依赖了data选项中的firstname和lastname两个属性。如果我们修改了其中一个属性,fullName就会重新计算并更新视图。

2.3 计算属性的setter

在有些情况下,我们需要对计算属性进行赋值。对于这种情况,Vue提供了计算属性的setter方法。例如:

new Vue({

data: {

firstName: 'Li',

lastName: 'Lei'

},

computed: {

fullName: {

get: function () {

return this.firstName + ' ' + this.lastName

},

set: function (newValue) {

var names = newValue.split(' ')

this.firstName = names[0]

this.lastName = names[names.length - 1]

}

}

}

})

上述代码中,我们使用了计算属性fullName的get和set方法,get方法用来获取fullName的值,set方法用来设置fullName的值。在set方法中,我们将输入的fullName字符串按空格分割成数组,然后分别赋值给firstName和lastName属性。由此可见,Vue的计算属性不仅可以用于页面的展示,还可以用于数据的双向绑定。

3. 计算属性VS方法

3.1 基本区别

在Vue中,既可以使用计算属性,也可以使用methods定义一个方法来计算数据。两者的主要区别在于:计算属性是基于缓存的,只有相关依赖发生改变才会重新计算;而方法则是每次调用都会执行一遍。

new Vue({

data: {

message: 'Hello Uniapp!'

},

computed: {

reversedMessage: function () {

return this.message.split('').reverse().join('')

}

},

methods: {

reverseMessage: function () {

return this.message.split('').reverse().join('')

}

}

})

上述代码中,我们定义了一个计算属性reversedMessage和一个方法reverseMessage,它们的功能是一样的,都是将message反转并返回。但是,每次调用reverseMessage方法都会重新计算一遍,而在计算属性中,只有message发生了变化,才会重新计算反转后的值。

3.2 简单情景下的选择

在简单的情况下,选择使用计算属性还是方法是无关紧要的。但是当数据处理量比较大、嵌套比较深时,建议使用计算属性,可以方便数据的复用和统一管理。

4. 总结

computed是Vue.js中一个非常实用的特性,在页面数据计算和渲染中起到了至关重要的作用。使用计算属性可以大大简化页面数据的计算和绑定,而且还可以优化性能,节省内存。理解computed的原理和使用方法,可以让我们更加高效地开发Vue.js应用。