我有一个页面,其中带有“Quarters”链接的导航栏。在“Quarters”链接下,当用户处于/quarters
路由时,将显示季度列表,例如2019Q2等。URL将为/quarters/2019q2
。
我想制作一个组件,它会显示超链接,如果当前URL与链接的href匹配,则会有selected
类。以下是我能够接近的最近代码:
<script>
import { afterUpdate } from 'svelte';
export let segment;
export let text = 'text here';
export let link;
let isCurrentPath = false;
console.log(segment, link, text);
afterUpdate(() => {
if (window.location.pathname.includes(link)) {
isCurrentPath = true;
debugger;
}
console.log('HL afterUpdate ', window.location);
});
</script>
<style>
/* omitted */
</style>
<a class:selected={segment && isCurrentPath} href={link}>{text}</a>
对于首次加载,这很好,但当用户导航到不同的数据页面时,选择不会更新。如何使某些代码仅在客户端运行?如果我在afterUpdate
之外访问window
对象,我将从服务器端代码获得null引用错误。
预计完成时间:我也尝试过这个:
let isCurrentPath = false;
let path = typeof window === 'undefined' ? '' : window.location.pathname;
$: if (path) isCurrentPath = window.location.pathname.includes(link);
当用户单击数据链接时,该代码不触发。尝试使用onMount
,但结果并不理想。
import { page } from '$app/stores';
然后像这样使用它:{#if $page.path == '/some/route'}
- m1212e