SvelteKit如何通过客户端路由器使用Goto重新加载当前页面?



当指示重定向到当前网页时,SvelteKit中的goto似乎不做任何事情:

<script>
import { goto, invalidate } from '$app/navigation';
function reloadPage() {
const thisPage = window.location.pathname;
console.log('goto ' + thisPage);
goto(thisPage);
}
</script>
<button on:click={() => reloadPage()}>
Reload
</button>

此外,我还尝试了invalidate,以及invalidate,然后是goto,以及goto,并添加了假查询参数,它们都不会导致页面刷新。

我可以让它工作的唯一方法是通过调用location.reload(),但是这将绕过SvelteKit的客户端路由并返回到服务器,通过网络重新加载整个应用程序。

您不应该使用goto,而应该使用invalidateAll

如果你的页面没有出现正确的更新,你没有使用data反应性,即一些值设置一次,不更新时,data重新加载。

这是一个解决办法,通过链接goto,但必须有一个更好的方法:

function reloadPage() {
const thisPage = window.location.pathname;
console.log('goto ' + thisPage);
goto('/').then(
() => goto(thisPage)
);
}

最新更新