【Vue3】2-6 : 计算属性与侦听器区别与原理(一)

本书目录:点击进入

一、计算属性 - computed:{}

1.1 目的

1.2 写法

代码 

二、特征

2.1 调用时当属性调用

2.2 缓存

2.3 默认只读

2.4 可赋值:需要定义成对象,并写get,set方法 (类似于java)

三、原理


一、计算属性 - computed:{}

        模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,可以移植到计算属性中进行处理。

1.1 目的

  • 简化模板语法中的逻辑编写

  • 使视图更加清晰,并具备语义化

1.2 写法

  • 代码 

<body>
  <div id="app">
    {{ message.split(' ').reverse().join(' ') }}<br>
    {{ reverseMessageMethod() }}<br>
    {{ reverseMessageMethod() }}<br>
    {{ reverseMessage1 }}<br>
    {{ reverseMessage1 }}<br>
    {{ reverseMessage2 }}<br>
    {{ reverseMessage2 }}<br>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          message: 'hello world'
        }
      },
      methods: {
        reverseMessageMethod(){
          console.log(0);
          return this.message.split(' ').reverse().join(' ');
        }
      },
      computed: {
        //方式一:方法
        reverseMessage1(){
          console.log(1);
          return this.message.split(' ').reverse().join(' ');},
        //方式二:对象
        reverseMessage2: {
          set(value){
            this.message = value;
          },
          get(){
            console.log(2);
            return this.message.split(' ').reverse().join(' ');
          }
        },
      }
    }).mount('#app');

    setTimeout(()=>{
      // 报警告:[Vue warn]: 
      // Write operation failed: computed property "reverseMessage1" is readonly.
      vm.reverseMessage1 = 'hi vue3';   
   
      vm.reverseMessage2 = 'hi vue4';      // 正常
    }, 2000)

  </script>
</body>

二、特征

2.1 调用时当属性调用

  • 可定义方法和对象

2.2 缓存

  • 重复调用时,调用的是缓存

  • 所以,这里只打印一次,1 和 2

2.3 默认只读

2.4 可赋值:需要定义成对象,并写get,set方法 (类似于java)

  • 赋值成hi vue4 

  • 由于显示的是 get() , 所以显示  vue4 hi

三、原理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ladymorgana

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值