vue.js - 从 VueJS mixin 访问常量
问题描述
我有这个组件
<script>
const serviceName = 'events'
import { mapState } from 'vuex'
import crud from './mixins/crud'
export default {
mixins: [crud],
data() {
return {
serviceName: serviceName,
apiBaseUri: '/api/v1/' + serviceName,
}
},
computed: {
...mapState({
events: state => state.events.data,
}),
},
mounted() {
this.boot()
},
}
</script>
它定义了一个 serviceName ,我也需要在这个 crud mixin 中使用它:
import { mapActions, mapMutations, mapState } from 'vuex'
export default {
data: function() {
return {
loading: {
environment: false,
table: false,
},
}
},
computed: {
...mapState({
form: state => state.events.form,
environment: state => state.environment,
}),
},
methods: {
...mapActions(serviceName, ['load']),
...mapMutations(serviceName, [
'setDataUrl',
'setStoreUrl',
'setErrors',
'setFormData',
'storeFormField',
]),
isLoading() {
return this.loading.environment || this.loading.table
},
boot() {
this.setDataUrl(this.apiBaseUri)
this.setStoreUrl(this.apiBaseUri)
this.load()
},
back() {
this.$router.back()
},
storeModel() {
this.store().then(() => {
this.load()
this.back()
this.clearForm()
})
},
},
}
问题是我总是收到“serviceName is not defined”错误消息,因为在 mapActions() 和 mapMutations() 中使用了 serviceName。
错误发生在
import crud from './mixins/crud'
它完全忽略了window.serviceName之类的东西,我也试过了。
解决方案
我能想到的最简单的解决方案是将serviceName
定义移动到另一个文件。例如...
// constants.js
export const SERVICE_NAME = 'events'
然后你可以在需要的地方导入它,例如
// in your component, your mixin, etc
import { SERVICE_NAME as serviceName } from './constants'
推荐阅读
- r - 使用 tidyverse 创建变量而不是基础 R
- python-3.x - Python 3.x:Pandas Dataframe 我们如何更改特定范围的列名?
- node.js - 如何使用 env 参数测试 nodejs 的 index.js?
- java - 在 Spring 上重复 AWS S3 Bean,但找不到重复项
- xcode - 如何在运行其他项目时修复“打印:条目,”:CFBundleIdentifier“,不存在”,该怎么办?
- php - 通过网站安装 Python 模块
- php - 如何在andorid 中从服务器创建报表PDF 或Excel?
- ocaml - 在 Ocaml 中打印用户定义的类型
- c - main 内部的纯函数没有按照我的意图获取和处理 x 的单个值
- html - 我想获取单击用户的 ID 并在我在引导模式上单击是时将其删除