API d'abonnement
Ces API notifient votre code JavaScript lorsque des modifications d'URL ou des événements de navigation se produisent.
onPage
S'abonne à un modèle de route spécifique. Le rappel se déclenche chaque fois que l'état correspondant passe (par exemple, actif à inactif ou les paramètres changent).
function onPage(
pattern: string,
callback: (active: boolean, location: PageLocation) => void,
exact: boolean = true,
matchGroup?: string
): () => void- Renvoie une fonction de nettoyage pour se désabonner.
active:truesi l'emplacement actuel correspond au modèle.location: Objet contenantpathname,query(paramètres de recherche),data(état de l'historique) etparamsanalysé.
Exemple
import { onPage } from '@beforesemicolon/router'
const unsubscribe = onPage('/users/:userId', (active, location) => {
if (active) {
console.log(`Now viewing user: ${location.params.userId}`)
console.log('State payload:', location.data)
} else {
console.log('Navigated away from user profile')
}
})
// Later: clean up listener
// unsubscribe();Utilisez exact = false pour vous abonner à un chemin de mise en page et à ses descendants :
onPage(
'/docs',
(active) => {
docsShell.hidden = !active
},
false
)onPageChange
Abonne à toutes les transitions de localisation mondiales. Déclenché après tout événement de navigation, quels que soient les chemins actifs.
type PageChangeCallback = (
pathname: string,
searchParams: Record<string, string>,
pageData: Record<string, unknown>
) => void
function onPageChange(callback: PageChangeCallback): () => void- Renvoie une fonction de nettoyage pour se désabonner.
Exemple
import { onPageChange } from '@beforesemicolon/router'
onPageChange((pathname, query, state) => {
// Send analytics view event
trackPageView(pathname)
})isOnPage
Aide pour vérifier si un chemin spécifique correspond à l'emplacement actuel du navigateur.
function isOnPage(pathname: string, exact: boolean = true): booleanexact: Sifalse, est évalué àtruesi l'emplacement du navigateur commence par le chemin spécifié (en traitant les sous-chemins comme des correspondances).
Exemples
// Browser is at: /todos/123?filter=all
isOnPage('/todos') // false (not exact)
isOnPage('/todos', false) // true (subpath match)
isOnPage('/todos/123') // true (exact path match)
isOnPage('/todos/123?filter=all') // true (exact match including queries)modifier ce document[!NOTE] Les correspondances de requête de recherche dans
isOnPagesont sensibles à l’ordre. Les paramètres doivent apparaître dans l'ordre exact spécifié.