Vue.js 利用计算属性有效地实现Vue
我的计算属性中有以下代码。预计该功能将变得非常复杂。把一切都放在这里对吗?我希望将其保存在存储文件中,但无法从computed属性中按名称调用函数。有什么建议吗Vue.js 利用计算属性有效地实现Vue,vue.js,vuex,computed-properties,Vue.js,Vuex,Computed Properties,我的计算属性中有以下代码。预计该功能将变得非常复杂。把一切都放在这里对吗?我希望将其保存在存储文件中,但无法从computed属性中按名称调用函数。有什么建议吗 computed: { assignValue() { this.valueToSet = this.value1; if (this.valueToSet < 10) { return "1 week" } else if (this.valueToSet &
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中,但是如何在computer属性中按名称调用/触发函数呢
如果不可能,是否有有效的替代方案?或者我应该继续这样做?Vuex本身具有可以与Vue组件的计算属性一起使用的属性,如文档中所示
就您的代码而言,您当前的方法没有问题。当需要在多个组件中重复使用该状态时,应将此代码移动到Vuex getter
代码中唯一的问题是:this.valueToSet=this.value1;。计算属性不应产生包括赋值在内的副作用。这并没有直接的危害,但在缓存计算值时,可能会在内部产生意外的后果。如果您仍然需要此部件-this.valueToSet=this.value1;-将其移动到其他计算属性或使用watch expression。Vuex本身具有可与Vue组件的计算属性一起使用的属性,如文档所示
就您的代码而言,您当前的方法没有问题。当需要在多个组件中重复使用该状态时,应将此代码移动到Vuex getter
代码中唯一的问题是:this.valueToSet=this.value1;。计算属性不应产生包括赋值在内的副作用。这并没有直接的危害,但在缓存计算值时,可能会在内部产生意外的后果。如果您仍然需要此部件-this.valueToSet=this.value1;-将其移动到其他计算属性或使用watch表达式。谢谢您的精确回答。据我所知,我可以把这个叫做$store.getter.xxx。从计算属性内?关于this.valueToSet=this.value1。当然我不会用它。将使用store.state访问所有文件。等待您的确认。在计算中,只需用this.value1<10替换所有表达式,如this.valueToSet<10等。计算程序将自动监视this.value1的更改。@MEAG否,您将把所有计算代码减去该赋值行移动到存储中的getter中。然后,您可以将该getter映射到页面/组件中的计算属性中,最简单的方法是使用…mapGetter'modulename',['getterName']。然后,您可以在模板中使用{{getterName}@MEAG来引用它,这与Soviut所说的一模一样。谢谢您的精确回答。据我所知,我可以把这个叫做$store.getter.xxx。从计算属性内?关于this.valueToSet=this.value1。当然我不会用它。将使用store.state访问所有文件。等待您的确认。在计算中,只需用this.value1<10替换所有表达式,如this.valueToSet<10等。计算程序将自动监视this.value1的更改。@MEAG否,您将把所有计算代码减去该赋值行移动到存储中的getter中。然后,您可以将该getter映射到页面/组件中的计算属性中,最简单的方法是使用…mapGetter'modulename',['getterName']。然后,您可以在模板中使用{{getterName}@MEAG来引用它,这与Soviut所说的一模一样。