[Vue警告]:使用带有参数的mixin时无法安装组件

问题描述 投票:0回答:1

自昨天以来,我一直在努力创建带有参数的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时返回一个使用参数的对象。

javascript vue.js vue-component mixins vue-mixin
1个回答
0
投票

根据本文,您应该能够静态地传递参数,但不能动态地传递参数。https://forum.vuejs.org/t/pass-parameters-to-a-mixin-method/26401/3

但是,从警告和共享代码中我看到的是,您尚未使用.vue文件中的template属性或template元素为组件定义任何模板。

© www.soinside.com 2019 - 2024. All rights reserved.