vue计算属性computed的使用

计算属性computed
描述:在同一个实例化对象中,其中一个属性改变,要求另外一个属性也跟着改变

angular事件监听:  $scope.$watch

计算属性的使用:

computed:{

b:function(){ //默认调用get

return

}

}

小例子:<div id="box">
    a => {{a}}
    <br>
    b => {{b}}
</div>
<script>
    var vm=new Vue({
        el:'#box',
        data:{
            a:1
        },
        computed:{
            b:function(){
                //业务逻辑代码
                return this.a+1;
            }
        }
    });

    document.onclick=function(){
        vm.a=101;
    };
</script>

------------------------------------------

computed:{

b:{

get: function(){ //默认调用get

return 值

}

set:function(){ //默认调用get

return 值

}设置值

}

}

 

小例子:
<div id="box"> a => {{a}} <br> b => {{b}}</div><script> var vm=new Vue({ el:'#box', data:{ a:1 }, computed:{ b:{ get:function(){ return this.a+2; }, set:function(val){ this.a=val; } } } }); document.onclick=function(){ vm.b=10;//可以在此改变computed的值 };</script>

温馨提示:同样是属性,computed的特殊之处在于里面可以放置一些业务逻辑代码,但是一定记得return


### Vue 3 中 `computed` 计算属性使用Vue 3 中,计算属性 (`computed`) 是一种用于基于其他响应式依赖项派生新状态的方法。这使得开发者可以更清晰地表达复杂的逻辑并保持组件的状态管理更加简洁。 #### 基本语法 定义一个简单的只读计算属性如下所示: ```javascript import { defineComponent, ref, computed } from 'vue'; export default defineComponent({ setup() { const message = ref('Hello'); // 只读计算属性 const reversedMessage = computed(() => { return message.value.split('').reverse().join(''); }); return { message, reversedMessage }; } }); ``` 此代码片段展示了如何创建一个名为 `reversedMessage` 的计算属性来反转字符串变量 `message` 的值[^1]。 对于具有 getter 和 setter 的可变计算属性,则可以通过对象形式指定两个函数来进行设置和获取操作: ```javascript const fullName = computed({ get: () => `${firstName.value} ${lastName.value}`, set: (newValue) => { [firstName.value, lastName.value] = newValue.split(' '); } }); ``` 这段代码实现了当更新 `fullName` 属性时自动拆分名字到相应的字段中去的功能[^2]。 #### 实际应用场景中的例子 假设有一个表单输入框用来接收用户的全名,并希望将其分解成姓氏和名字分别存储起来,在这种情况下就可以利用带有 getter/setter 对的计算属性实现这一需求。 ```html <template> <div> <!-- 绑定 v-model 到计算属性 --> <input type="text" v-model="fullName"> <p>First Name: {{ firstName }}</p> <p>Last Name :{{ lastName }}</p> </div> </template> <script lang="ts"> import { defineComponent, ref, computed } from 'vue'; export default defineComponent({ setup() { let firstName = ref(''); let lastName = ref(''); const fullName = computed({ get: () => `${firstName.value} ${lastName.value}`, set(value) { [firstName.value, lastName.value] = value.split(' '); }, }); return { firstName, lastName, fullName, }; }, }); </script> ``` 在这个实例里,每当用户更改 `<input>` 输入框内的内容时,都会调用 `fullName` 的 setter 方法将新的值解析为 `firstName` 和 `lastName`;而页面上显示的名字则是由 getter 返回的结果组合而成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值