Вот злой путь ...
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ Перемещение управляемых элементов Svelte под ноги не может быть хорошей идеей, и я совершенно не понимаю, какие неблагоприятные побочные эффекты вы могли бы встречайте дальше!
Я особенно рекомендую не использовать это в {#each}
блоках, особенно в ключевых, так как Svelte захочет изменить порядок своих элементов и может расстроиться, если они не там, где их ожидают в DOM .
... но, может быть, это поможет вам разобраться в простых случаях. Вы будете судьей.
Моя идея состоит в том, чтобы отобразить полную сцепленную строку (префикс + суффикс) с дополнительным элементом, который я могу взять и заменить на компонент, уже отрисованный независимо Svelte, вне этого фрагмента.
Вот трюк:
{@html prefix + '<span id="vslot"></span>' + suffix}
Вот пример компонента, который реализует трюк:
<script>
import { afterUpdate } from 'svelte'
export let prefix
export let suffix
let wrap
let content
afterUpdate(() => {
const vslot = wrap.querySelector('#vslot')
vslot.parentNode.replaceChild(content, vslot)
})
</script>
<div bind:this={wrap}>
{@html prefix + '<span id="vslot"></span>' + suffix}
</div>
<div bind:this={content}>
<slot />
</div>
Вы бы использовали его так:
<Wrapper {prefix} {suffix}>
<MyComponent />
</Wrapper>
РЕПЛ