自昨天以来,我一直在努力创建带有参数的Vue mixin,并且得到了[Vue警告]:无法安装组件:模板或渲染函数未定义。这是我的JS文件,包括mixin:
export default (dataObject) => ({
data() {
return {
inputValue: ''
}
},
methods: {
updateValue(newValue) {
this.inputValue = newValue
}
},
mounted() {
this.$bus.$on('value-changed', this.updateValue)
},
beforeDestroy() {
this.$bus.$off('value-changed');
},
computed: {
filteredData() {
if (this.inputValue !== '') {
let newData = Object.keys(dataObject)
.filter(key => key.includes(this.inputValue))
.reduce(
(newData, current) => ((newData[current] = dataObject[current]), newData), {}
)
return newData
}
else return dataObject
}
}
})
这是我的Vue组件:
import searchLogic from '../logic/searchLogic.js'
import { mapState } from 'vuex'
export default {
computed: {
...mapState(['champions']),
},
mixins: [searchLogic(this.champions)]
}
导入此文件是可行的,因为当我尝试导入不带参数的普通mixin时,它可以正常工作。我也尝试过传递champions
和"champions"
而不是this.champions
,但似乎都不起作用。 mixin有问题吗?我读到有可能返回一个函数,该函数在创建mixins时返回一个使用参数的对象。
根据本文,您应该能够静态地传递参数,但不能动态地传递参数。https://forum.vuejs.org/t/pass-parameters-to-a-mixin-method/26401/3
但是,从警告和共享代码中我看到的是,您尚未使用.vue文件中的template属性或template元素为组件定义任何模板。