Vue 有效地使用计算 属性
Vue effectively using computed property
我的计算 属性 中有以下代码。该功能预计会变得复杂。把一切都放在这里是正确的吗?我想把它放在我的存储文件中,但我无法从计算的 属性 中按名称调用函数。有什么建议吗?
computed: {
assignValue() {
this.valueToSet = this.value1;
if (this.valueToSet < 10) {
return "1 week"
} else if (this.valueToSet < 20) {
return "2 weeks"
} else if (this.valueToSet < 30) {
return "3 weeks"
} else {
return 0;
}
}
}
总而言之,我想把它放在我的 store.js (vuex) 中,但是我怎样才能 call/trigger 在“计算机 属性 中按名称命名一个函数”。
如果不可能,有什么有效的替代方法吗?或者我应该继续这样?
Vuex 本身具有 getter 属性,您可以将这些属性与 Vue 组件的计算 属性 一起使用,如文档中所示。
就你的代码而言,你现在的做法是没有问题的。当您需要在多个组件中重用该状态时,您应该将此代码移至 Vuex getter。
您的代码中唯一的问题是 this.valueToSet = this.value1;
。计算属性不应产生副作用(包括赋值)。没有直接的危害,但它可能会在内部产生意想不到的后果,因为计算值被缓存了。如果您仍然需要此部分 - this.valueToSet = this.value1;
- 将其移至其他计算 属性 或使用 watch 表达式。
我的计算 属性 中有以下代码。该功能预计会变得复杂。把一切都放在这里是正确的吗?我想把它放在我的存储文件中,但我无法从计算的 属性 中按名称调用函数。有什么建议吗?
computed: {
assignValue() {
this.valueToSet = this.value1;
if (this.valueToSet < 10) {
return "1 week"
} else if (this.valueToSet < 20) {
return "2 weeks"
} else if (this.valueToSet < 30) {
return "3 weeks"
} else {
return 0;
}
}
}
总而言之,我想把它放在我的 store.js (vuex) 中,但是我怎样才能 call/trigger 在“计算机 属性 中按名称命名一个函数”。
如果不可能,有什么有效的替代方法吗?或者我应该继续这样?
Vuex 本身具有 getter 属性,您可以将这些属性与 Vue 组件的计算 属性 一起使用,如文档中所示。
就你的代码而言,你现在的做法是没有问题的。当您需要在多个组件中重用该状态时,您应该将此代码移至 Vuex getter。
您的代码中唯一的问题是 this.valueToSet = this.value1;
。计算属性不应产生副作用(包括赋值)。没有直接的危害,但它可能会在内部产生意想不到的后果,因为计算值被缓存了。如果您仍然需要此部分 - this.valueToSet = this.value1;
- 将其移至其他计算 属性 或使用 watch 表达式。