vue-计算属性(computed)(重要)
一、计算属性(computed)
1、说明
当一些数据需要根据其它数据变化时,需要进行处理才能去展示,虽然vue提供了绑定数据表达式绑定的方式,但是设计它的初衷只是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,对于一些比较复杂和特殊的计算有可能就捉襟见肘了,而且计算的属性写在模板里也不利于项目维护
computed主要的作用:
- 分离逻辑(模板和数据分离)
- 缓存值
- 双向绑定(getter,setter)
2、语法格式
-
格式
id="app">> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">> <script> let app = new Vue({ el: '#app', data: { id:1, originalPrice:1200, discountPrice:200, }, //计算属性 computed: { // 把日期换成 常见规格格式的字符串。 currentPrice: function () { return "当前价格:" + (this.originalPrice - this.discountPrice); } } });v-text="originalPrice - discountPrice">
>v-text="currentPrice">
>
4、setter与getter
-
说明
每一个计算属性都包含一个getter 和一个setter,上面的示例都是计算属性的默认用法, 只是利用了getter来读取
如果需要,也可以提供一个setter 函数, 当修改计算属性的值就像修改一个普通数据那样时,就会触发setter 函数
-
示例代码
<script> var vm = new Vue({ data: { // 声明 message 为一个空值字符串 message: '' }, }) // 响应式 vm.message = 'Hello!' vm.v="非响应式的的值" >watch:{ [key: string]: string | Function | Object }]3、语法说明
-
key
必须是Vue对象data中定义的属性
-
- 值可以是一个字符串,这个字符串是方法名
- 值可以是一个函数
- 值也可以是一个对象,其中包含回调函数可以其他选项:比如是否深度遍历。
4、基础使用
-
示例代码
id="app"> type="text" v-model="search"/>> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">> <script> let vm = new Vue({ el: "#app", data: { user:{ name:"码帝", } search: "", results: [], }, methods: { fun: function () { alert("111"); } } watch: { // 使用函数 search: function (v1, v2) { console.log('新值: %s, 旧值: %s', v1, v2) this.results.push(v1) } } }) >- >
- v-for="result in results" v-text="result"> >
5、与computed的区别
- 触发条件不同
- computed计算属性会依赖于使用它的data属性,只要是依赖的data属性值有变动,则自定义重新调用计算属性执行一次。
- watch则是在监控的data属性值发生变动时,其会自动调用watch回调函数。
- 应用场景不同
- 执行异步操作,开销较大的操作,避免堵塞主线程,使用watch。
- 简单且串行返回的,使用computed
作者:杨健kimyeung
-