怎样修改vue中的computed计算属性的值

本文讲解了如何在Vue中使用computed的get和set方法来管理计算属性objArr,重点介绍了如何通过setter函数向options数组中添加新数据。通过实例演示了如何触发set函数并观察到计算属性的变化,同时强调了set函数在数据同步中的关键作用。

**

computed是计算出来的属性, 相当于计算结果, 所以我们不能直接对结果进行修改!

**

getter函数

负责使用data中的数据, 但是注意 只能用, 不能改! 使用完后 记得将结果return

data() {
    return {
        options: [{a: 1}]
    }
}
computed {
	// 写法一: 函数形式的简写:
	objArr() { return this.options;}
    
    // 写法二: 完整写法:
    objArr: {
        get() {
            return this.options;
        }
    }
}

setter函数

有一个参数 newValue, 负责接收传进来的值, 可以使用这个newValue给data中的数据进行操作:

set(newValue) {
	// 可以在这里面对data数据进行操作, 这样get拿到的结果也会随data的值变化而变化
	this.data.options = newValue, // 用newValue替换原来的options
}

现在有个需求: 想给options里添加新的数据, 如何操作?

// 1. 需要用到set函数:
computed {
    objArr: {
        get() { return this.options;},
        set(newValue) {
            console.log('newValue', newValue)
            this.options.push(newValue);
        }
    }
}

// 2. 触发set函数 即给objArr赋值:

// 这里我们封装个方法:
methods: {
    setObjArr() {
        this.objArr = {b: 2}
    }
}
// 通过按钮点击触发
<button @click="setObjArr">set</button>

值得注意的是: 这里的this.objArr = { b: 2 }并不是把{b: 2} 赋值给objArr的意思, 而是传参给里面的set函数。
触发setObjArr事件, 会发现 计算属性 objArr 已经改变了, 其本质是因为data中的options发生了改变。

————————————————
原文链接:https://blog.youkuaiyun.com/small_white_123/article/details/117780579

Vue 2 中,计算属性computed property)是基于它们的响应式依赖进行缓存的。只有在依赖的响应式数据发生变化时,计算属性才会重新求。因此,判断一个计算属性可以通过以下几种方式实现: ### 通过模板中绑定判断计算属性Vue 的模板语法中,可以直接将计算属性绑定到 DOM 元素上,从而在页面上显示其。例如: ```html <div id="app"> <p>计算属性为:{{ computedValue }}</p> </div> ``` 在 Vue 实例中定义 `computedValue`: ```javascript new Vue({ el: '#app', data: { a: 10, b: 20 }, computed: { computedValue() { return this.a + this.b; } } }); ``` 页面上会显示 `30`,从而可以直观地判断计算属性。 ### 通过控制台打印判断计算属性 可以在 Vue 实例创建后,通过控制台输出计算属性,例如: ```javascript const vm = new Vue({ el: '#app', data: { a: 10, b: 20 }, computed: { computedValue() { return this.a + this.b; } } }); console.log(vm.computedValue); // 输出 30 ``` ### 通过 Watch 监听依赖并判断计算属性 如果需要在计算属性依赖的数据发生变化时进行判断,可以使用 `watch` 来监听依赖的数据,并在回调中输出或处理计算属性: ```javascript new Vue({ el: '#app', data: { a: 10, b: 20 }, computed: { computedValue() { return this.a + this.b; } }, watch: { a: { handler() { console.log('当前计算属性为:', this.computedValue); } }, b: { handler() { console.log('当前计算属性为:', this.computedValue); } } } }); ``` 当 `a` 或 `b` 发生变化时,`computedValue` 的也会随之变化,并在控制台中输出最新的。 ### 通过代码逻辑判断计算属性 在某些业务逻辑中,可能需要根据计算属性进行条件判断。例如: ```javascript new Vue({ el: '#app', data: { a: 10, b: 20 }, computed: { computedValue() { return this.a + this.b; } }, methods: { checkValue() { if (this.computedValue > 30) { console.log('计算属性大于 30'); } else { console.log('计算属性小于等于 30'); } } } }); ``` 调用 `checkValue` 方法时,会根据当前 `computedValue` 的进行判断。 ### 总结 在 Vue 2 中,判断计算属性可以通过模板绑定、控制台输出、`watch` 监听以及在方法中进行逻辑判断等方式实现。这些方法能够帮助开发者在不同场景下有效地获取和判断计算属性的状态[^5]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值