Javascript Vue功能组件抛出未定义错误
我使用render方法创建了以下功能组件:Javascript Vue功能组件抛出未定义错误,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,我使用render方法创建了以下功能组件: import Vue from "vue" const { render, staticRenderFns } = Vue.compile(`<div>Hello World</div>`) Vue.component("HelloWorld", { functional: true, render, staticRenderFns }) 我得到了一个错误: \u c未定义 我在这里做错了什么吗?据
import Vue from "vue"
const { render, staticRenderFns } = Vue.compile(`<div>Hello World</div>`)
Vue.component("HelloWorld", {
functional: true,
render,
staticRenderFns
})
我得到了一个错误:
\u c未定义
我在这里做错了什么吗?据我所知,Vue.compile生成的渲染函数不能用于渲染功能组件。据我所知,由Vue.compile生成的渲染函数不能用于渲染功能组件。我认为从模板字符串创建功能组件最接近的方法是解析字符串以获取元素类型和属性,并渲染为:
Vue.component("hello-world", {
functional: true,
render: function(createElement, context) {
return createElement(
"div",
'example text'
);
}
});
我认为从模板字符串创建功能组件最接近的方法是解析字符串,以获得元素类型和属性,并呈现为:
Vue.component("hello-world", {
functional: true,
render: function(createElement, context) {
return createElement(
"div",
'example text'
);
}
});
如前所述,
Vue.compile
返回的渲染函数不能用作功能组件中的渲染函数。当您检查由Vue.compile返回的函数签名时,原因就变得很清楚了:
const render: (createElement: any) => VNode
如您所见,函数缺少第二个参数,这是函数组件的渲染函数所必需的:
render: (createElement: CreateElement, context: RenderContext<Record<never, any>>) => VNode
…并像任何其他SFC一样使用该组件(单文件组件=VUE文件)
如果需要动态模板文本,只需使用非功能组件即可…如前所述,Vue.compile返回的渲染函数不能用作功能组件中的渲染函数。当您检查由Vue.compile返回的函数签名时,原因就变得很清楚了:
const render: (createElement: any) => VNode
如您所见,函数缺少第二个参数,这是函数组件的渲染函数所必需的:
render: (createElement: CreateElement, context: RenderContext<Record<never, any>>) => VNode
…并像任何其他SFC一样使用该组件(单文件组件=VUE文件)
如果您需要动态模板文本,只需使用非功能组件即可…请参见此-您需要导入组件导入我的组件吗?但它已经声明为一个全局组件。而且,这个问题只与功能组件有关。正常组件工作正常,即如果我删除functional:true
它工作正常。怎么样:@webnoob该死,这很有用。非常感谢你。虽然不确定功能组件。请参见-您需要导入您的组件导入我的组件吗?但它已经声明为一个全局组件。而且,这个问题只与功能组件有关。正常组件工作正常,即如果我删除functional:true
它工作正常。怎么样:@webnoob该死,这很有用。非常感谢你。虽然不确定功能组件。哦,废话!那真是个倒霉蛋。有没有办法通过传递模板字符串来构建功能组件?我不这么认为。与Vue捆绑的模板编译器无法编译功能模板。我相信只有随vue loader
提供的编译器才能在构建时执行此操作。请问您为什么需要使用vue.compile
?也许有更好的解决方案。实际上,我从服务器获取html并将其作为Vue组件呈现。您获取的是纯html还是Vue模板?如果它是经过消毒的HTML,那么您可以使用v-HTML
来渲染它。哦,废话!那真是个倒霉蛋。有没有办法通过传递模板字符串来构建功能组件?我不这么认为。与Vue捆绑的模板编译器无法编译功能模板。我相信只有随vue loader
提供的编译器才能在构建时执行此操作。请问您为什么需要使用vue.compile
?也许有更好的解决方案。实际上,我从服务器获取html并将其作为Vue组件呈现。您获取的是纯html还是Vue模板?如果它是经过净化的HTML,那么您可以使用v-HTML
来呈现它。