Vue使用函数实现计算属性、计算属性的实现和简写

1. 使用函数实现计算属性

当修改姓或名,vue会去重新加载模板,然后函数也会被调用。但如果模板中存在多个fullName(),则会被调用多次而不是一次

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    姓:<input type="text" v-model="firstName"> <br/>
    名:<input type="text" v-model="lastName"> <br/>
    全名:<span>{{fullName()}}</span>
</div>

<script type="text/javascript">
    new Vue({
        el: '#root',
        data: {
            firstName: '张',
            lastName: '三'
        },
        methods: {
            fullName() {
                return this.firstName + '-' + this.lastName
            }
        }
    })
</script>

</body>
</html>

效果如下:
函数实现计算属性

2. 计算属性

通过computed来定义计算属性。计算属性不能通过vm._data访问

可以设置getter方法

  1. 当有人读取fullName时,get就会被调用,且返回值就作为fullName的值
  2. getter调用时候。初次读取fullName时,或所依赖的数据发生变化时

可以设置setter方法。当fullName被修改时setter被调用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    姓:<input type="text" v-model="firstName"> <br/>
    名:<input type="text" v-model="lastName"> <br/>
    全名:<span>{{fullName}}</span>
</div>

<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            firstName: '张',
            lastName: '三'
        },
        computed: {
            fullName: {
                get() {
                    // console.log(this) //此处的this是vm
                    return this.firstName + '-' + this.lastName
                },
                set(value) {
                    const arr = value.split('-')
                    this.firstName = arr[0]
                    this.lastName = arr[1]
                }
            }
        }
    })
</script>

</body>
</html>

效果如下:
计算属性

3. 计算属性简写

当计算属性只要getter,没有setter,可以进行简写

        computed: {
            fullName() {
                return this.firstName + '-' + this.lastName

            }
        }
Vue3中,计算属性被改造成了一个组合式的API,使用时需要从Vue中引入,并在setup函数中进行配置。在Vue3中,计算属性仍然有两种写法,简写和全写。 简写计算属性只有get方法,可以使用computed函数进行简写。例如,在setup函数中可以这样定义一个计算属性: ``` import { computed } from 'vue' setup() { let fullName = computed(() => { // 计算属性的逻辑 return // 计算结果 }) return { fullName } } ``` 全写的计算属性有get和set方法,可以使用computed函数的完整写法。例如,在setup函数中可以这样定义一个计算属性: ``` import { computed } from 'vue' setup() { let fullName = computed({ get() { // 计算属性的逻辑 return // 计算结果 }, set(value) { // 设置计算属性的逻辑 } }) return { fullName } } ``` 以上是关于Vue3组合式计算属性的示例代码和使用方式。在模板中,可以通过双花括号的方式引用计算属性的值,或者通过v-model指令绑定计算属性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue3的组合API——计算属性computed与监视watch](https://blog.csdn.net/mantou_riji/article/details/125963552)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue3中的计算属性](https://blog.csdn.net/m0_56219678/article/details/122846714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值