美文网首页
第3课:计算属性

第3课:计算属性

作者: 我七 | 来源:发表于2018-09-02 03:40 被阅读0次

第1题:创建以一个vue实例,并使用计算属性和方法实现一个字符串翻转的操作,写出核心代码

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>字符翻转操作</title>
</head>
<body>
  <div id="demo">
    <p>{{text}} 原始字符</p>
    <p>{{text.split(',').reverse().join(',')}} 方法翻转</p>
    <p>{{reverseText}} 计算属性翻转</p>
  </div>
 <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
  <script>
    var app = new Vue({
      el: '#demo',
      data: {
        text: '123, 456, 789'
      },
      computed:{
        reverseText:function(){
          return this.text.split(',').reverse().join(',')
        }
      }
     })
  </script>
</body>
</html>

效果

第2题:何时使用模板内表达式?何时使用计算属性

模板内的表达式实际上只用于简单的运算,对于复杂逻辑,使用计算属性。

我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代

第3题:计算缓存 vs Methods,两者的区别

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>字符翻转操作</title>
</head>
<body>
  <div id="demo">
    <p>{{text}} 原始字符</p>
    <p>{{text.split(',').reverse().join(',')}} 方法翻转</p>
    <p>{{reverseText}} 计算属性翻转</p>
  </div>
 <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
  <script>
    var app = new Vue({
      el: '#demo',
      data: {
        text: '123, 456, 789'
      },
      computed:{
        reverseText:function(){
          return this.text.split(',').reverse().join(',')
        }
      }
     })
  </script>
</body>
</html>

该例子中text不变,多次访问reverseText计算属性会立即返回之前的计算结果而不必再次执行函数
计算属性和Methods两种方式的最终结果相同,但是计算属性是基于他们的依赖进行缓存的,只有在相关依赖发生改变是他们才会从新求值。每当触发重新渲染时,调用Methods总会再次执行函数。
我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代。

第 4 题:实例化一个vue实例,在data中定义一个姓氏firstName和名字firstName,还有一个全称叫fullName。

需求:分别使用watch监听器和计算属性来实现以下功能实现,只要姓氏firstName和名字firstName中的任意一个改变,全称fullname就会改变
提示:fullName = firstName + firstName。

<div id="nameWrap">{{ fullName }}</div>

watch

var app = new Vue({
  el: '#nameWrap',
  data: {
    firstName: 'Xiao',
    lastName: 'Ming',
    fullName : 'Xiao Ming'
  },
  watch: {
    firstName: function (val) {
      this.fullName = val + ' ' + this.lastName
    },
    lastName: function (val) {
      this.fullName = this.firstName + ' ' + val
    }
  }
})

计算属性

var app = new Vue({
  el: '#nameWrap',
  data: {
    firstName: 'Xiao',
    lastName: 'Ming'
  },
  computed: {
    fullName: function () {
      return this.firstName + ' ' + this.lastName
    }
  }
})

效果展示: http://js.jirengu.com/lihopoyehi

相关文章

  • watch和computed的区别

    计算属性Computed: 计算属性通常依赖于其他数据属性。对于依赖属性的任何改变都会触发计算属性的逻辑。计算属性...

  • vue计算属性和侦听器

    祭出demo 计算属性 计算属性缓存vs方法函数 计算属性vs侦听属性 计算属性的setter 侦听器 在这个示例...

  • 7 vue 计算属性

    计算属性 计算属性的复杂属性 set/get

  • 属性和方法

    1、属性 存储属性 延迟存储属性 计算属性 只读计算属性 只有 getter 方法但没有 setter 方法的计算...

  • 第3课:计算属性

    第1题:创建以一个vue实例,并使用计算属性和方法实现一个字符串翻转的操作,写出核心代码 效果 第2题:何时使用模...

  • Vue复习

    Vue的计算属性 计算属性computed

  • swift8——属性

    属性分为计算属性和存储属性 计算属性:用来计算描述计算过程和就算结果的 存储属性:用来定义类和结构体的某些特征; ...

  • 计算属性,以及其和方法、watch侦听器的对比

    计算属性 计算属性,以及其和方法、侦听器的对比 computed(计算属性)性能相对较高,计算属性的结果会被缓存,...

  • 监听器和计算属性的区别watch,computed

    计算属性computed和监听器watch区别?1.能使用计算属性computed的尽量使用计算属性,但是计算属性...

  • vue 计算属性computed

    computed计算属性 对于任何复杂逻辑,你都应当使用计算属性 计算属性中的setter 计算属性默认只有 ge...

网友评论

      本文标题:第3课:计算属性

      本文链接:https://www.haomeiwen.com/subject/nxpuwftx.html