首页 > 解决方案 > 传递常规 Vue 文件时,Vue 的渲染 createElement 会出错

问题描述

所以我创建了一个带有渲染函数的 Vue 文件,该函数应该循环遍历 ID 并根据这些创建组件。

特别是在我正在使用的渲染函数createElement中,我传递了三个参数:

  1. 一个 Vue 组件(来自 JS 文件)
  2. 一个配置对象
  3. 一个 Vue 组件(来自 Vue 文件)

这是 3. 这给了我这个错误:

无法安装组件:未定义模板或渲染函数。

这个 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上面函数中返回的另一个参数。

标签: vue.jsvuejs2rendercreateelement

解决方案


您不能将数组createElement作为第一个参数传递。

试试这个:

createElement(dialogs[id])

推荐阅读