• Vue学习:计算属性


    计算属性

    我们准备是实现一个加法的计算器,当用户输入了两个数字,我们就得到这两个数字的和,效果图如下:

     

     

    我们可以使用很多方式来实现上述效果:

    第一种: 使用插值实现

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Document</title>
    6. <style type="text/css">
    7. .num {
    8. width: 30px;
    9. height: 20px;
    10. font-size: 16px;
    11. font-weight: bold;
    12. }
    13. .txt {
    14. font-size: 16px;
    15. font-weight: bold
    16. }
    17. </style>
    18. <script src="./js/vue.global.js"></script>
    19. <script type="text/javascript">
    20. window.onload = function(){
    21. const {createApp} = Vue
    22. createApp({
    23. data(){
    24. return {
    25. number1:0,
    26. number2:0,
    27. }
    28. },
    29. methods:{
    30. sum:function(){
    31. return parseInt(this.number1) + parseInt(this.number2);
    32. }
    33. }
    34. }).mount("#root")
    35. };
    36. </script>
    37. </head>
    38. <body>
    39. <div id="root">
    40. <input type="number" class="num" v-model="number1"/>
    41. <span class="txt">+</span>
    42. <input type="number" size="5" class="num" v-model="number2" />
    43. <span class="txt">=</span>
    44. <span class="txt">{{sum()}}</span>
    45. </div>
    46. </body>
    47. </html>

    第二种可以使用计算属性来实现:

    计算属性: 就是对Vue对象中的data中的属性进行再加工或者计算得到的属性,我们称为计算属性.在Vue中,我们使用computed来设置计算属性.

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Document</title>
    6. <style type="text/css">
    7. .num {
    8. width: 30px;
    9. height: 20px;
    10. font-size: 16px;
    11. font-weight: bold;
    12. }
    13. .txt {
    14. font-size: 16px;
    15. font-weight: bold
    16. }
    17. </style>
    18. <script src="./js/vue.global.js"></script>
    19. <script type="text/javascript">
    20. window.onload = function(){
    21. const {createApp} = Vue
    22. createApp({
    23. data(){
    24. return {
    25. number1:0,
    26. number2:0,
    27. }
    28. },
    29. methods:{
    30. },
    31. computed:{
    32. sum:{
    33. get(){
    34. //get方法, 当有人读取计算属性时,该计算属性的get()函数就会执行
    35. return parseInt(this.number1) + parseInt(this.number2); //此时的this就是vm
    36. }
    37. }
    38. }
    39. }).mount("#root")
    40. };
    41. </script>
    42. </head>
    43. <body>
    44. <div id="root">
    45. <input type="number" class="num" v-model="number1"/>
    46. <span class="txt">+</span>
    47. <input type="number" size="5" class="num" v-model="number2" />
    48. <span class="txt">=</span>
    49. <span class="txt">{{sum}}</span>
    50. </div>
    51. </body>
    52. </html>

    此时我们就实现了两个数的相加,但是我们需要注意一点, 计算属性的get函数在什么时候被调用呢?

    1) 计算属性初次被使用的时候

    2) 所依赖的数据发送变化的时候

    此时有人就好有一个疑问,我们使用插值与计算属性都能实现上述效果,但是它们有什么区别呢?

    区别就是: 插值实现,如果使用多次,不会走缓存,sum()函数会被调用n次,但是使用计算属性,我们的计算属性会进行缓存, 所以使用多次,都不会重复调用get()函数

    我们对计算属性提供了get()方法, 但是我们如果想去修改计算属性,我们也可以提供set()方法, 但是在实际开发中,我们几乎不会对计算属性提供set()方法,这是因为我们的计算属性一般都是为了读取,

    1. computed:{
    2. sum:{
    3. get(){
    4. console.log('getter...');
    5. return parseInt(this.number1) +parseInt(this.number2);
    6. },
    7. set(value){
    8. console.log('setter被调用,计算属性修改成:'+value);
    9. }
    10. }
    11. }

    很少去修改计算属性.

    计算属性的简写:

    如果计算属性只提供get方法,那我们可以简写如下:

    1. computed:{
    2. sum(){
    3. return parseInt(this.number1) + parseInt(this.number2);
    4. }
    5. }

  • 相关阅读:
    python 脏话处理、特殊词汇过滤!
    ElasticSearch--分片的路由原理
    神经气体网络(NGN)和不断增长的神经气体网络(GNGN)实现(Matlab代码实现)
    UML活动图
    C高级文件相关指令
    详解 Java 17 中新推出的密封类
    java 利用geotools包对wkt格式数据进行操作
    【开源项目】X-TRACK源码分析
    机器学习实验六:决策树-海洋生物例子
    logback日志是怎么保证多线程输出日志线程安全的
  • 原文地址:https://blog.csdn.net/H215919719/article/details/127667317