Vue入门-计算属性

古城微笑少年丶 2021-09-15 14:16 359阅读 0赞

计算属性, Vue独有的特性

计算属性跟方法的对比

1.写成方法调用,也可以实现功能,但是由于方法是调用的,每当数据更新引起页面更新,每一个方法调用都会再执行一次,当方法很多且逻辑很复杂时,内存开销会很大.
2.计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值.所以,对于任何复杂逻辑,你都应当使用计算属性。

小插曲

面试题目:解决在输入框输入内容时,频繁向服务器请求的问题。

答案:引入lodash.js,在请求的方法后面添加_.debounce,即可避免频繁向服务器请求的问题。

代码参考

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>计算属性</title>
  6. <script src="https://cdn.jsdelivr.net/npm/vue"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <button @click="a++">a自增</button>
  11. <button @click="b++">b自增</button>
  12. <p>a的值为:{
  13. {a}}</p>
  14. <p>b的值为:{
  15. {b}}</p>
  16. <!-- <p>a+c的结果:{
  17. {getA()}}</p> -->
  18. <p>a+c的结果:{
  19. {getAaddC}}</p>
  20. <!-- <p>b+c的结果:{
  21. {getB()}}</p> -->
  22. <p>b+c的结果:{
  23. {getBaddC}}</p>
  24. <hr>
  25. <p>显示name的结果:{
  26. {name}}</p>
  27. <button @click="name='羊驼'">点击改变</button>
  28. <hr>
  29. <ul>
  30. <!-- 通过计算属性实现数组的过滤,而后遍历展示 -->
  31. <li v-for="num in getResult">{
  32. {num}}</li>
  33. </ul>
  34. <hr>
  35. <p>面试题目:解决在输入框输入内容时,频繁向服务器请求的问题</p>
  36. <!--lodash.js中的方法解决问题-->
  37. <input type="text" @input="doInput">
  38. </div>
  39. </body>
  40. </html>
  41. <script src="lodash.js"></script>
  42. <script>
  43. /*
  44. * 计算属性, Vue独有的特性
  45. * 计算属性跟方法的对比:
  46. * 1.写成方法调用,也可以实现功能,但是由于方法是调用的,每当数据更新引起页面更新的话,每一个方法调用都会再执行一次,所有的方法很多,且逻辑很复杂,内存开销会很大.
  47. * 2.计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值.
  48. */
  49. let vm1 = new Vue({
  50. el: '#app',
  51. data: {
  52. a: 10,
  53. b: 20,
  54. c: 30,
  55. str: '',
  56. arr: [13, 22, 35, 42, 57]
  57. },
  58. methods: {
  59. getA() {
  60. return this.a + this.c;
  61. },
  62. getB() {
  63. return this.b + this.c;
  64. },
  65. // 使用_.debounce,可使函数延迟执行
  66. doInput: _.debounce(function (e) {
  67. console.log('执行了doInput函数', e.target.value);
  68. },2000)
  69. },
  70. // 优先考虑使用计算属性实现
  71. computed: {
  72. // 属性的getter方法,可以把getAaddC看做一个属性
  73. getAaddC: function () {
  74. console.log('getAaddC执行');
  75. return this.a + this.c;
  76. },
  77. getBaddC: function () {
  78. console.log('getBaddC执行');
  79. return this.b + this.c;
  80. },
  81. name: {
  82. get: function () {
  83. return this.str;
  84. },
  85. set: function (v) {
  86. this.str = v;
  87. }
  88. },
  89. // 通过计算属性,实现数组的过滤。Vue官网推荐计算属性代替过滤器
  90. getResult: function (v) {
  91. return this.arr.filter((v) => {
  92. return v > 30;
  93. });
  94. }
  95. }
  96. });
  97. </script>

发表评论

表情:
评论列表 (有 0 条评论,359人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue 计算属性

    简介 构造器的 computed 选项,用于定义 Vue 实例的计算属性。 虽然模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。如果在模板中放入太多的逻...

    相关 Vue 计算属性

    1. 前言 本节介绍计算属性的使用方法。包括什么是计算属性,计算属性的特点,还有计算属性和方法在实际使用中的区别。其中重点掌握计算属性和方法的区别,了解它之后,才能在日常

    相关 Vue计算属性

    计算属性就是当其所依赖的属性的值发生变化的时候,这个属性的值会自动更新,与之相关的东西也会自己更新。计算属性可以完成各种复杂的逻辑,但是最终都要返回一个结果。计算属性可以依赖多

    相关 Vue计算属性

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

    相关 Vue入门-计算属性

    计算属性, Vue独有的特性 计算属性跟方法的对比 1.写成方法调用,也可以实现功能,但是由于方法是调用的,每当数据更新引起页面更新,每一个方法调用都会再执行一次,