Svelte 如何替换目标的内容,而不是附加到子对象?

Svelte 如何替换目标的内容,而不是附加到子对象?,svelte,svelte-3,svelte-component,Svelte,Svelte 3,Svelte Component,调用新组件{target}将组件追加到目标,我想用新组件替换目标的所有旧内容。我如何才能做到这一点?如果要对服务器呈现的标记进行水合处理,最好使用水合:true选项 若目标先前被一个轻巧的组件占据,那个么最好调用该组件的$destroy方法 否则,最简单的方法就是清空目标元素: target.innerHTML=; 新组件{target}; 如果要水合服务器呈现的标记,最好使用水合:true选项 若目标先前被一个轻巧的组件占据,那个么最好调用该组件的$destroy方法 否则,最简单的方法就是清

调用新组件{target}将组件追加到目标,我想用新组件替换目标的所有旧内容。我如何才能做到这一点?

如果要对服务器呈现的标记进行水合处理,最好使用水合:true选项

若目标先前被一个轻巧的组件占据,那个么最好调用该组件的$destroy方法

否则,最简单的方法就是清空目标元素:

target.innerHTML=; 新组件{target};
如果要水合服务器呈现的标记,最好使用水合:true选项

若目标先前被一个轻巧的组件占据,那个么最好调用该组件的$destroy方法

否则,最简单的方法就是清空目标元素:

target.innerHTML=; 新组件{target};
我也遇到了同样的问题,我分别创建了HTML回退,只是想用客户端的轻巧组件来补充整个dom,这些组件完全反映了静态HTML。但是,使用的方法是创建两个嵌套元素,因为它附加到目标而不是替换它

抓取要替换的元素的父元素似乎对我有用:

从“/App.svelte”导入应用程序; 让target=document.querySelector'html'.parentNode; 新应用程序{ 目标:目标,, 是的 }; 在我的具体案例中,可以更简单地写为:

从“/App.svelte”导入应用程序; 新应用程序{ 目标:文件, 是的 };
替换顶层元素会导致一些控制台错误,但以下是屏幕截图和更多关于如何在项目中实现它的详细信息,以防有用:

我也遇到了同样的问题,我单独创建了HTML回退,只是想用完全反映静态HTML的客户端轻巧组件来补充整个dom。但是,使用的方法是创建两个嵌套元素,因为它附加到目标而不是替换它

抓取要替换的元素的父元素似乎对我有用:

从“/App.svelte”导入应用程序; 让target=document.querySelector'html'.parentNode; 新应用程序{ 目标:目标,, 是的 }; 在我的具体案例中,可以更简单地写为:

从“/App.svelte”导入应用程序; 新应用程序{ 目标:文件, 是的 }; 替换顶层元素会导致一些控制台错误,但以下是屏幕截图和更多详细信息,说明我们如何在项目中实现它,以防有所帮助:

这将在目标的父元素中的目标元素之前预先添加新组件,然后删除目标

关于锚的相关文件:

使用target==可能不是一个好主意

这将在目标的父元素中的目标元素之前预先添加新组件,然后删除目标

关于锚的相关文件:


使用target==可能不是一个好主意。

您是在谈论路由吗?如果是,试试这个:你是在谈论路由吗?如果是,请尝试以下操作:如何保留上一个目标的属性?例如名称、id、类等。如何保留前一个目标的属性?例如名称、id、类等。
function replaceTarget (target) {
    const component = new MySvelteComponent({
        target: target.parentElement,
        anchor: target,
    });
    target.remove();
}