Vue 的渲染 createElement 在传递常规 Vue 文件时出错
Vue's render createElement gives error when passed a regular Vue file
所以我创建了一个带有渲染函数的 Vue 文件,该函数应该遍历 ID 并根据这些函数创建组件。
特别是在我的渲染函数中,我使用 createElement
向其传递三个参数:
- 一个 Vue 组件(来自 JS 文件)
- 配置对象
- 一个 Vue 组件(来自 Vue 文件)
它是 3。这给了我这个错误:
Failed to mount component: template or render function not defined.
这个 Vue 文件没有渲染功能,但是它有一个 template
,所以我很困惑为什么会出现这个错误。
在下面的代码中 [createElement([dialogs[id]])]
是给出错误的部分:
import { QDialog } from 'quasar'
import Signin from './Signin.vue'
import Signout from './Signout.vue'
const dialogs = {
Signin,
Signout
}
function createDialogNode (id, createElement, parent) {
return createElement(QDialog, {
props: {
value: parent.toggles[id]
},
on: {
input: function (newState) {
parent.toggles[id] = newState
}
}
}, [createElement([dialogs[id]])])
}
// further down I use `createDialogNode` inside the render function and loop over the props inside `dialogs`.
所以在上面的代码中,您看到我有一个包含导入组件的对象 dialogs
。这些组件是常规的 Vue 文件。
我想在 createElement
中将它们作为第三个参数传递给上面函数中返回的另一个 createElement
。
您不能将数组作为第一个参数传递给 createElement
。
试试这个:
createElement(dialogs[id])
所以我创建了一个带有渲染函数的 Vue 文件,该函数应该遍历 ID 并根据这些函数创建组件。
特别是在我的渲染函数中,我使用 createElement
向其传递三个参数:
- 一个 Vue 组件(来自 JS 文件)
- 配置对象
- 一个 Vue 组件(来自 Vue 文件)
它是 3。这给了我这个错误:
Failed to mount component: template or render function not defined.
这个 Vue 文件没有渲染功能,但是它有一个 template
,所以我很困惑为什么会出现这个错误。
在下面的代码中 [createElement([dialogs[id]])]
是给出错误的部分:
import { QDialog } from 'quasar'
import Signin from './Signin.vue'
import Signout from './Signout.vue'
const dialogs = {
Signin,
Signout
}
function createDialogNode (id, createElement, parent) {
return createElement(QDialog, {
props: {
value: parent.toggles[id]
},
on: {
input: function (newState) {
parent.toggles[id] = newState
}
}
}, [createElement([dialogs[id]])])
}
// further down I use `createDialogNode` inside the render function and loop over the props inside `dialogs`.
所以在上面的代码中,您看到我有一个包含导入组件的对象 dialogs
。这些组件是常规的 Vue 文件。
我想在 createElement
中将它们作为第三个参数传递给上面函数中返回的另一个 createElement
。
您不能将数组作为第一个参数传递给 createElement
。
试试这个:
createElement(dialogs[id])