vue.js - Vue 有效地使用计算属性
问题描述
我的计算属性中有以下代码。该功能预计会变得复杂。把所有东西都放在这里是正确的吗?我想将它放在我的商店文件中,但我无法从计算属性中按名称调用函数。有什么建议吗?
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) 中,但是如何在“计算机属性”中按名称调用/触发函数。
如果不可能,任何有效的替代方案?还是我应该继续这样?
解决方案
Vuex 本身具有getter属性,您可以将其与 Vue 组件的计算属性一起使用,如文档中所示。
就您的代码而言,您当前的方法没有问题。当您需要在多个组件中重用该状态时,您应该将此代码移至 Vuex getter。
您的代码中唯一的问题是this.valueToSet = this.value1;
. 计算属性不应产生副作用(包括赋值)。没有直接的危害,但由于计算值被缓存,它可能会在内部产生意想不到的后果。如果您仍然需要这部分 -this.valueToSet = this.value1;
将其移至其他计算属性或使用监视表达式。
推荐阅读
- javascript - HuePicker 滑块不滑动反应颜色
- python - Kong 2.1.4 是否支持 Python 3.9?
- java - 通过 Sql Server sp_execute_external_script 使用 Java 执行 Https 事务
- makefile - Makefile,将函数应用于列表
- java - 创建名为 'springSecurityFilterChain' 的 bean 时出错。不完整的映射。尝试使用 requestUrls() 完成它。
.hasRole('用户') - swiftui - 键盘不覆盖 SwiftUI 中的视图
- python - 打开文件夹并在保存新修改的同时修改文件
- snowflake-cloud-data-platform - 如何在雪花中编写用户定义的函数?
- sql-server - LAG 仅在第一行工作。忽略所有其他以下行
- api - 相同的 HTTPS 请求在 Postman 中有效,但在 JMeter 中给出 400 Bad Request