计算属性和侦听器

一、计算属性

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:

<div>
    {{ message.split(‘‘).reverse().join(‘‘) }}
</div>

在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串。当你想要在模板中多次引用此处的翻转字符串时,就会更加难以处理。

所以,对于任何复杂逻辑,你都应当使用计算属性。

<div id = ‘com‘>
        <h3>{{msg}}</h3>
        <p>{{currentMsg}}</p>
        <button @click=‘clickHandler‘>更改</button>
</div>
  var com = new Vue({
            el:‘#com‘,
            data:{
                msg:‘学习computed‘
            },
            methods:{
                clickHandler(){

                    this.msg = ‘我更改了数据‘

                }

            },
            computed:{
                currentMsg(){
                    // computed方法中默认只有getter

                    return this.msg
                 }

            }

        })

当我点击按钮的时候更改了当前的数据,同时h3和p标签中数据也随时改变。

为什么会这样呢?

因为Vue知道com.currentMsg依赖与com.msg,因此当com.msg发生改变时,所有依赖com.currentMsg的绑定也会更新。而且最妙的是我们已经以声明的方式创建了这种依赖关系。:计算属性的getter函数是没有副作用的,这使它更易于测试和理解。

同样的上面操作,我们不用computed声明的计算属性方法,而仅仅通过methods中声明的方法也能完成上面的效果,那么为什么又要使用computed方法呢?

因为计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。这就意味着只要msg还没有发生变化,多次访问currentMsg计算属性会立刻返回之前计算的结果,而不比再次执行函数。同样的。每当触发重新渲染时,调用方法将总会执行函数。

原文地址:https://www.cnblogs.com/shi-guang/p/9075938.html

时间: 2024-10-06 20:38:55

计算属性和侦听器的相关文章

VueJs(7)---计算属性和侦听器

计算属性和侦听器 一. 概述 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> {{ message.split('').reverse().join('') }} </div> 在这个地方,模板不再是简单的声明式逻辑.你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串.当你想要在模板中多次引用此处的翻转字符串时,就会更加难以

1.3 Vue中的计算属性和侦听器

Vue中的计算属性和侦听器 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Vue中的计算属性和侦听器</title> <!--1 引入Vue库--> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

Vue.js 实战教程 V2.x(7)计算属性和侦听器

7计算属性和侦听器 7.1计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的. 在模板中放入太多的逻辑会让模板过重且难以维护. 所以,对于任何复杂逻辑,你都应当使用计算属性. 基础例子 <div id="example"> <p>Original message: "{{ message }}"</p> <p>Computed reversed message: "{{ reversedMe

5.计算属性和侦听器

计算属性 所以,对于任何复杂逻辑,你都应当使用计算属性.  vm.reversedMessage 的值始终取决于 vm.message 的值. 计算属性缓存 vs 方法 你可能已经注意到我们可以通过在表达式中调用方法来达到同样的效果: 不同的是计算属性是基于它们的响应式依赖进行缓存的. 只在相关响应式依赖发生改变时它们才会重新求值.这就意味着只要 message 还没有发生改变, 多次访问 reversedMessage计算属性会立即返回之前的计算结果,而不必再次执行函数. 相比之下,每当触发重

Vue.js学习日记(3)——计算属性和侦听器

1.计算属性 模板不仅可以是简单的声明式逻辑,也可以是较为复杂的表达式. <div id="element"> <!--简单声明--> {{message}} <!--复杂表达式,表示变量message的翻转字符串--> {{message.split('').reverse().join('')}} </id> 如果表达式过于复杂,将不利于直接理解.当需要在模板中多次引用message的翻转字符串时,操作也会变得繁琐. 所以,对于任何复

Vue计算属性和侦听器

计算属性 模板内的表达式非常便利,但是在模板中放入太多的逻辑会让模板过重切难以维护.对于任何复杂逻辑都应该使用计算属性. <p>{{ reverseMsg }}</> var vm = new Vue({ el: '#example', data: { message: 'hello' }, computed: { reverseMsg: function() { return this.message } } }) 这里声明一个计算属性reverseMsg.我们提供的函数将作用属

vue之计算属性和侦听器

一.使用计算属性 模板内的表达式是非常便利的,但适用于简单运算.在模板中放入太多的逻辑会让模板过重且难以维护. <script src="vue.js"></script> <div id="app"> <p>{{ msg.split("").reverse().join("") }}</p> </div> <script> var vm= n

VUE 计算属性 vs 侦听属性

计算属性 vs 侦听属性 Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性.当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch——特别是如果你之前使用过 AngularJS.然而,通常更好的做法是使用计算属性而不是命令式的 watch 回调.细想一下这个例子: <div id="demo">{{ fullName }}</div> var vm = new Vue({ el: '#demo', data: { fi

Vue中的计算属性和侦听属性

Vue的侦听属性可以使用 watch ,它可以监听多个变量,一旦它们发生了变化,就执行function函数,var代表的是这个发生变化了的参数. var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', lastName: 'Bar', fullName: 'Foo Bar' }, watch: { firstName: function (val) { this.fullName = val + ' ' + this.lastName