Я пытаюсь решить эту проблему для Nuxt
Codesandbox WIP не работает: 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>'
Обратите внимание, что он содержит компонент Vue <site-banner>
, на котором есть некоторые подпорки (пропелла 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.
Так как мне сделать это в Nuxt?Я хочу взять строку HTML с сервера, отобразить ее на странице и превратить любые зарегистрированные компоненты Vue в полноценные компоненты Vue.По сути, небольшая фабрика "VueifyThis (html)".