Computed property "imgDate" was assigned to but it has no setter. The computed property "imgDate" is already defined as a method.
时间: 2024-10-12 14:07:46 浏览: 23
在JavaScript (特别是Vue.js) 中,"Computed properties"(计算属性)是用来响应式地基于其他数据属性的值动态生成新值的。当你试图将一个非函数赋值给一个已经声明为 `computed` 的 `imgDate` 属性时,这通常是由于误解了它的用途。
通常,计算属性应该定义为返回一个表达式的函数,而不是直接赋值。例如,如果 `imgDate` 需要基于另一个属性(如 `uploadDate`)进行计算,你应该这么写:
```javascript
data() {
return {
uploadDate: '',
// ...
};
},
computed: {
imgDate() {
return new Date(this.uploadDate);
// 或者更复杂的计算
}
}
```
在这个例子中,`imgDate` 就是一个计算属性,它会根据 `uploadDate` 变化而自动更新。如果试图像 `this.imgDate = 'some value';` 这样设置它的值,就会报错,因为它没有对应的 setter 方法来接收外部的设定。
相关问题
Computed property "billName" was assigned to but it has no setter.
这是一个警告信息,意思是计算属性 "billName" 被赋值了,但是它没有 setter,也就是不能通过赋值改变它的值。这可能会导致一些问题,比如你可能无法正确更新该属性的值。如果你需要修改该属性的值,你需要添加一个 setter 方法来实现它。例如:
```
var myObj = {
firstName: "John",
lastName: "Doe",
get billName() {
return this.firstName + " " + this.lastName;
},
set billName(value) {
var nameParts = value.split(" ");
this.firstName = nameParts[0];
this.lastName = nameParts[1];
}
};
console.log(myObj.billName); // "John Doe"
myObj.billName = "Jane Smith";
console.log(myObj.billName); // "Jane Smith"
console.log(myObj.firstName); // "Jane"
console.log(myObj.lastName); // "Smith"
```
在这个例子中,我们添加了一个 setter 方法来允许我们修改计算属性 "billName" 的值。当我们设置 "billName" 属性时,setter 方法会将传入的值拆分为名字的两个部分,并将它们分别存储在 "firstName" 和 "lastName" 属性中。
uniapp Computed property "followList" was assigned to but it has no setter.
在UniApp中,当你定义了一个计算属性(computed property),它会根据依赖的数据动态计算出一个新的值。然而,如果你给计算属性赋值但没有提供setter方法,就会出现"Computed property 'followList' was assigned to but it has no setter."的错误。
这个错误的原因是计算属性是只读的,不能直接给它赋值。计算属性的值是通过依赖的数据自动计算得出的,而不是手动赋值的。
如果你想要修改计算属性的值,你需要修改它所依赖的数据,然后计算属性会自动重新计算。或者你可以将计算属性改为一个具有setter方法的普通属性。
阅读全文