Le composant <page-link> restitue un wrapper de balise d'ancrage HTML standard (<a>) qui intercepte les événements de clic, met à jour l'historique du navigateur et se met en surbrillance avec un attribut active lorsqu'il correspond à l'emplacement actuel.

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

Attributs

AttributTapezPar défautDescriptif
pathstringChemin actuelLe chemin d'accès de destination (par exemple /home ou paramètres relatifs à la requête).
searchstringundefinedAjoute ou met à jour les paramètres de recherche (par exemple tab=settings).
keep-current-searchbooleanfalseConserve les paramètres de recherche d'URL existants lors de la navigation vers un nouveau chemin.
exactbooleantrueLorsque true, les liens sont marqués actifs uniquement sur une correspondance exacte du nom de chemin.
titlestringundefinedLe titre du document à définir en cas de navigation réussie.
payloadobject{}Charge utile de l’état de l’historique. Dans HTML, fournissez une chaîne d'objet sérialisée JSON.

Résolution de chemin relatif

Pour rendre les structures de mise en page réutilisables, <page-link> résout automatiquement les préfixes abrégés :


Style d'état actif

Lorsque l'emplacement du navigateur correspond à la cible du lien, le composant obtient un attribut natif active :

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

Vous pouvez cibler cet état dans CSS à l'aide d'attributs standard ou de parties fantômes 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);
}

Passer des charges utiles

Utilisez payload pour transmettre les données d'état de l'historique à la page suivante.

En clair HTML, les attributs sont des chaînes, donc payload doit être un objet sérialisé JSON valide :

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

Lors du rendu de <page-link> via Markup, transmettez la valeur en tant que propriété d'objet :

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

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

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

La charge utile est disponible sur l'itinéraire de destination via getPageData(), onPage(), onPageChange() ou <page-data key="...">.

modifier ce document