我有一个页面,其中有一个带有“Quarters”链接的导航栏。在 Quarters 链接下,当用户在/quarters
路线上时,将显示一个季度列表,如 2019Q2 等。网址将为/quarters/2019q2
.
selected
如果当前 url 与链接的 href 匹配,我想制作一个显示超链接的组件,该超链接将具有该类。这是我能得到的最接近的:
<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>
这适用于第一次加载,但是当用户导航到不同的数据页面时,选择不会更新。如何让一些代码只在客户端运行?如果我在window
外部访问该对象,afterUpdate
我将从服务器端代码中得到一个 null ref 错误。
ETA:也试过这个:
let isCurrentPath = false;
let path = typeof window === 'undefined' ? '' : window.location.pathname;
$: if (path) isCurrentPath = window.location.pathname.includes(link);
当用户单击其中一个数据链接时,该代码不会触发。也试过onMount
了,没有阳性结果。