我要在某些Vue组件中访问一组静态数据。示例:
COLORS = Object.freeze({
RED: 1,
GREEN: 2,
BLUE: 3,
})
FLAVOURS = Object.freeze({
VANILLA: 'vanilla',
CHOCOLATE: 'chocolate',
})
data()
中)访问这些常量。我尝试使用mixin
解决我的问题:
// ColorMixin.js
export const COLORS = Object.freeze({
RED: 1,
GREEN: 2,
})
export const ColorMixin = {
created() {
this.COLORS = COLORS
}
}
然后,在我的组件中,我必须使用该mixin
以及常量:
<template>
<input name="red" :value="COLORS.RED" />
<input name="green" :value="COLORS.GREEN" />
</template>
<script>
import {COLORS, ColorMixin} from './ColorMixin.js'
export default {
mixins: [ColorMixin],
data() {
return {
default_color: COLORS.RED,
}
}
}
</script>
这可行,但似乎有点重复。我的问题是否有更优雅的解决方案?
答案 0 :(得分:0)
您不只是将Color.js
文件中导出的var导入正确的SFC中?
COLORS = Object.freeze({
RED: 1,
GREEN: 2,
BLUE: 3,
});
FLAVOURS = Object.freeze({
VANILLA: 'vanilla',
CHOCOLATE: 'chocolate',
});
export {COLORS, FLAVOURS};
然后在您的证监会中
<template>
<input name="red" :value="default_color" />
</template>
<script>
import {COLORS, FLAVOURS} from './Color.js';
export default {
data() {
return {
default_color: COLORS.RED,
default_flavour: FLAVOURS.CHOCOLATE,
}
}
}
</script>
或者只是创建一个Vuex存储来保存这些数据并直接在每个SFC中使用它
答案 1 :(得分:0)
仅使用global mixin怎么样?
// import your constants
Vue.mixin({
created: function () {
this.COLORS = COLORS;
}
})