javascript - [Vue 警告]:使用带有参数的 mixin 时无法挂载组件
问题描述
从昨天开始,我一直在努力创建一个带有参数的 Vue mixin,我得到了一个 [Vue warn]: Failed to mount component: template or render function not defined。这是我的 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 文件中的模板属性或模板元素为组件定义任何模板。
推荐阅读
- css - Flexbox 错误地计算带有文本的项目的宽度
- powershell - Sitecore Powershell - 名称值列表字段
- java - R mailr包未加载Java
- android - 如何在 Android 中获取 Firestore POSTID 集合的大小?
- c++ - 如何以不同的方式使用 CASE?
- java - mutator可以带两个参数吗
- python - 如何解决python错误WinError 10049]请求的地址在其上下文中无效
- node.js - 如何在 Firebase Cloud Functions 中使用字符串连接将所有获取的数据合并为一个字符串?
- glib - 在使用较旧和较新的 GLib 版本时将 g_autoptr() 与 G_DEFINE_AUTOPTR_CLEANUP_FUNC() 一起使用
- android - '未来的实例
, 但期望 bool