计算属性与监听器

计算属性和侦听器

计算属性

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。对于任何复杂逻辑,你都应当使用计算属性

计算属性缓存 vs 方法

计算属性的结果会进行缓存,只要属性的内容不变,就不会重新计算 。相比之下,每当触发重新渲染时,调用方法将总会再次执行函数。如果你不希望有缓存,请用方法来替代。

<div id="example">
  {{ message.split('').reverse().join('') }}
</div>
<div>
 <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({
  el: '#example',
  data: {
    message: 'Hello'
  },
  computed: {
    // 计算属性的 getter
    reversedMessage: function () {
      // `this` 指向 vm 实例
      return this.message.split('').reverse().join('')
    }
  }
})

计算属性 vs 侦听属性

Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性。当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch,通常更好的做法是使用计算属性而不是命令式的 watch 回调。

vue侦听器

虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。

<div id='app'>
    {{msg}}
</div>

<script type='text/javascript'>
    var app = new Vue({
        el:"#app",
        data:{
            msg:
        },
        watch:{
            msg:function(val){   //传递一个参数,表示修改的结果
                console.log('修改msg后触发')
                console.log(val)   //打印结果为修改后的值
            }        
        }
    })
</script>
posted @ 2020-11-05 23:22  至安  阅读(514)  评论(0编辑  收藏  举报