vue computed属性使用
使用报错[Vue warn]: Computed property "localValue" was assigned to but it has no setter.
代码:
<a-input
class="search-input"
v-model.trim="localValue"
:allow-clear="true"
:placeholder="inputPlaceholader"
@change="onInput">
</a-input>
computed: {
localValue () {
return this.content
}
}
报错原因
computed计算属性默认只有getter方法,所以只能获取,不能设置。而v-model是数据的双向绑定,当输入框的值变化时,localValue也会跟着变化,但localValue没有设置setter方法,所以会报错。
computed的setter
有需要时,我们可以提供一个setter:
localValue: {
get () {
return this.content
},
set (value) {
this.content = value
}
}
设置setter之后,localValue就可以被重新赋值。
备注:当localValue值变化时,content也会一起变化
知识扩展
computed计算属性与方法的区别
例子如下:
<p>Reversed message: "{{ reversedMessage }}"</p>
computed: {
reversedMessage () {
return this.message.split('').reverse().join('')
}
}
同样也可以用methods中的方法来实现同样的效果:
methods: {
reversedMessage () {
return this.message.split('').reverse().join('')
}
}
什么时候用计算属性什么时候用方法,要根据不同的需求来判断。
两者的不同点在于:计算属性是基于它们的响应式依赖进行缓存的,只要message的值不发生改变,
reversedMessage访问时会返回以前的计算结果,而不会重新计算。而方法在访问时,总会触发再次执行。
所以,如果我们需要缓存,不想每次都计算,就使用计算属性;如果不需要缓存,就使用方法。
监听watch与计算属性
通常情况下,当某个数据随着其他数据变动而变动时,我们最常用的就是计算属性而不是watch监听,但在数据需要异步执行时,watch方法才是最有效的。
例如:
watch: {
localValue (value) {
this.getData(value) // 请求接口,获取数据
}
}
在这里,当localValue数据发省变化时,watch方法允许我们去访问API,这是计算属性无法做到的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2018-07-23 Java学习--单例