Computed property "tabs" was assigned to but it has no setter
时间: 2024-10-19 13:05:13 浏览: 21
ember-computed-property-bug
这个错误信息通常出现在JavaScript中,特别是当你尝试给一个对象的 computed 属性(如 Vue.js 中的响应式计算属性)赋值,但该对象并没有对应的 setter 方法来处理这个变化的时候。Computed properties 并不是直接设置的,它们是基于其他数据(通常是数据绑定的 prop 或者其他 reactive 变量)动态计算出来的。
例如,在Vue中,你可能会这样做:
```javascript
data() {
return {
currentTab: 'home'
}
},
computed: {
tabs: function() {
// 这里 tabs 是基于 currentTab 计算得出的结果
return ['home', 'about', 'contact'];
}
}
```
如果你试图像下面这样手动赋值给 `tabs`,就会触发错误,因为 `tabs` 没有显式的 setter:
```javascript
this.tabs = ['new-tabs']; // 这将会抛出错误,因为 tabs 是只读的
```
要解决这个问题,你需要确保不会直接修改 computed 属性的值,而是通过影响其依赖的原始 data 属性来间接改变结果。比如在这个例子中,你可以这样更改:
```javascript
this.currentTab = 'new-tab'; // 这样可以更新 tabs 的计算结果
```
阅读全文