<page-link> 组件呈现标准 HTML 锚点 (<a>) 标记包装器,该包装器拦截单击事件、更新浏览器历史记录,并在匹配当前位置时使用 active 属性突出显示自身。

html
<page-link path="/dashboard" title="Admin Panel">Go to Dashboard</page-link>

属性

属性类型默认描述
pathstring当前路径目标路径名(例如 /home 或查询相关参数)。
searchstringundefined附加或更新搜索参数(例如 tab=settings)。
keep-current-searchbooleanfalse导航到新路径时保留现有 URL 搜索参数。
exactbooleantruetrue 时,仅在路径名完全匹配时链接才会被标记为活动状态。
titlestringundefined成功导航时设置的文档标题。
payloadobject{}历史状态有效负载。在 HTML 中,提供 JSON 序列化对象字符串。

相对路径分辨率

为了使页面布局结构可重用,<page-link> 自动解析速记前缀:


活动状态样式

当浏览器位置与链接的目标匹配时,组件将获得本机 active 属性:

html
<!-- Rendered active HTML element -->
<page-link path="/todos" active>Todos</page-link>

您可以使用标准属性或 CSS 影子部分在 CSS 中定位此状态:

css
/* Style the outer custom component element */
page-link[active] {
    font-weight: 700;
}

/* Style the inner anchor tag using shadow parts */
page-link::part(anchor) {
    color: var(--foreground);
    text-decoration: none;
    transition: border-color 0.2s;
}

page-link[active]::part(anchor) {
    border-bottom: 2px solid var(--primary);
    color: var(--primary);
}

传递有效负载

使用 payload 将历史状态数据传递到下一页。

在普通 HTML 中,属性是字符串,因此 payload 必须是有效的 JSON 序列化对象:

html
<page-link path="/dashboard" payload='{"role": "admin", "userId": 42}'>
    Enter Panel
</page-link>

通过 Markup 渲染 <page-link> 时,将该值作为对象属性传递:

javascript
import { html } from '@beforesemicolon/web-component'

const user = { role: 'admin', userId: 42 }

html` <page-link path="/dashboard" payload="${user}"> Enter Panel </page-link> `

有效负载可通过 getPageData()onPage()onPageChange()<page-data key="..."> 在目标路由上获得。

编辑此文档