我正在为Nuxt解决这个问题
WIP的Codesandbox无法使用:https://codesandbox.io/s/zw26v3940m
好的,所以我将WordPress作为CMS,它正在输出一堆HTML。HTML的示例如下所示:
'<h2>A heading tag</h2>
<site-banner image="{}" id="123">Slot text here</site-banner>
<p>some text</p>'
请注意,它包含一个<site-banner>
带有一些道具的Vue组件(该image
道具是我为了简洁而省略的JSON对象)。该组件已在全球注册。
我有一个我们编写的组件,该组件<wp-content>
在Vue中很好用,但在Nuxt中不起作用。注意这两个渲染函数,一个是Vue的,另一个是Nuxt的(显然,这是出于示例的原因,我不会同时使用两者)。
export default {
props: {
html: {
type: String,
default: ""
}
},
render(h, context) {
// Worked great in Vue
return h({ template: this.html })
}
render(createElement, context) {
// Kind of works in Nuxt, but doesn't render Vue components at all
return createElement("div", { domProps: { innerHTML: this.html } })
}
}
因此,最后一个渲染函数在Nuxt中可用,除了它实际上不会在中渲染Vue组件外this.html
,它只是将它们作为HTML放置在页面上。
So how do I do this in Nuxt? I want to take a string of HTML from the server, and render it on the page, and turn any registered Vue components into proper full-blown Vue components. Basically a little "VueifyThis(html)" factory.
我对您的codeandbox进行了一些更改。似乎现在可以工作https://codesandbox.io/s/q9wl8ry6q9
我更改的东西无效: