Чтобы действительно "вернуть обработанный HTML", вам нужно скомпилировать с generate: 'ssr'
опцией и использовать функцию Cmp.render()
. Но вы не можете использовать такой компонент в DOM ...
Вы не можете получить содержимое компонента, но вы можете получить HTML любого элемента, используя действие, подобное следующему:
<script>
const logHtml = el => {
console.log(el.innerHTML)
}
</script>
<div use:logHtml> ... </div>
Или просто bind:this
для элементов:
<script>
let el
$: if (el) console.log(el.innerHTML)
</script>
<div bind:this={el}> ... </div>
В вашем случае, однако, кажется, что вам нужно визуализировать компонент непосредственно в элемент подсказки. Для этого вы можете использовать new MyComponent
.
Вот пример действия, визуализирующего пользовательский компонент с tippy.js
(см. обновленный REPL ):
export function tipz(elem, { content, props, ...opts }) {
let cmp
const tp = tippy(elem, {
onCreate() {
cmp = new content({
target: instance.popper.querySelector(".tippy-content"),
props,
});
},
...opts
})
return {
update(params) {
// ensure reactivity
if (cmp) {
cmp.$set(params.props)
}
},
destroy() {
tp.destroy();
if (cmp) {
// cleanup component
cmp.$destroy();
}
}
};
}