我有一个小问题。到目前为止,一切都编译得很好,直到试图让 mixins 正常工作。当创建一个并在单个文件组件中使用它时——没问题。效果很好。但是当从外部文件导入 mixin 时,它会破坏组件。外部JS甚至在同一目录中。
在Roots/Sage (webpack + vue-loader)上运行 Vue 和 vuex 。
所以外部文件(slideBase.js)看起来像这样:
export const slideBase = {
// mixin here
};
我也试过:
export default {
// mixin here
}
在单个文件组件中:
<script>
import { slideBase } from './slideBase.js'
export default {
name: 'slide-half-2',
mixins: [slideBase],
data() {
...
</script>
还有其他人遇到 mixin 问题,或者知道可能发生了什么吗?
干杯,
编辑:控制台返回一个错误,指出我的一个变量未定义(放置在 vue import
/ export
s 上方 - 就在开始<script>
标记上方。当然,从组件文件中调用 mixin 时,这些变量工作正常。
mixin 本身包含所有组件的计算属性——因此 Chrome 中的 Vue 控制台也(error during evaluation)
为每个属性提供。
vuex 商店没有显示错误。
没有构建错误。
mixin 看起来像这样,为简洁起见省略了其他对象,但语法正确:
export const slideBaseTest = {
computed: {
BackToMulti() {
if (typeof this.$store.state.slideInfo[prevSlideNumber] === 'undefined') {
} else {
if (this.$store.state.slideInfo[prevSlideNumber].thisSlideMulti == 'true') {
return 'back-to-multi'
} else {}
}
}
};
编辑2:我可能已经找到了问题,但我不知道如何解决它:
控制台中显示的未定义变量是 prevSlideNumber。这是在开始标记正下方的单个文件组件中定义的:
const slideNumber = 2;
var prevSlideNumber = slideNumber - 1;
if (slideNumber == 'home') {
var prevSlideNumber = 0;
} else {}
在创建 mixin(在外部文件中)以供重用之前,该变量会很好地加载。在单个文件组件本身中定义相同的 mixin 时,它也可以正常工作。
是否有加载事件的顺序可能会阻止 mixin 看到变量的值?如果首先加载 mixin,我可以看到原因。有什么办法吗?
这是外部文件 mixin(为简洁起见,具有计算属性之一):
export default {
computed: {
BackToMulti() {
if (typeof this.$store.state.slideInfo[prevSlideNumber] === 'undefined') {
} else {
if (this.$store.state.slideInfo[prevSlideNumber].thisSlideMulti == 'true') {
return 'back-to-multi'
} else {}
}
}
}
};
非常感谢。= )