logologo
Démarrer
Manuel
Développement
Plugins
API
Accueil
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Démarrer
Manuel
Développement
Plugins
API
Accueil
logologo
Présentation de RunJS
Importation de modules
Rendu dans le conteneur

Variables globales

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.route
Next Pagectx.setValue()
Avis de traduction IA

Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.

#ctx.router

Une instance de routeur basée sur React Router, utilisée pour la navigation par code au sein de RunJS. Elle est généralement utilisée en conjonction avec ctx.route et ctx.location.

#Cas d'utilisation

ScénarioDescription
JSBlock / JSFieldNaviguer vers des pages de détails, des listes ou des liens externes après un clic sur un bouton.
Règles de liaison / Flux d'événementsExécuter navigate vers une liste ou un détail après une soumission réussie, ou transmettre un state à la page cible.
JSAction / Gestion d'événementsExécuter la navigation au sein d'une logique telle que la soumission de formulaires ou les clics sur des liens.
Navigation de vueMettre à jour l'URL via navigate lors du basculement de la pile de vues interne.

Remarque : ctx.router est uniquement disponible dans les environnements RunJS disposant d'un contexte de routage (par exemple, JSBlock dans une page, pages de flux, flux d'événements, etc.) ; il peut être nul dans des contextes purement backend ou sans routage (par exemple, les flux de travail).

#Définition du type

router: Router

Router provient de @remix-run/router. Dans RunJS, les opérations de navigation telles que l'accès à une page, le retour en arrière et le rafraîchissement sont implémentées via ctx.router.navigate().

#Méthodes

#ctx.router.navigate()

Navigue vers un chemin cible, ou exécute une action de retour/rafraîchissement.

Signature :

navigate(to: string | number | null, options?: RouterNavigateOptions): Promise<void>

Paramètres :

  • to : Chemin cible (string), position relative dans l'historique (number, par exemple -1 pour reculer), ou null (pour rafraîchir la page actuelle).
  • options : Configuration optionnelle.
    • replace?: boolean : Indique s'il faut remplacer l'entrée actuelle de l'historique (la valeur par défaut est false, ce qui ajoute une nouvelle entrée).
    • state?: any : État à transmettre à la route cible. Ces données n'apparaissent pas dans l'URL et sont accessibles via ctx.location.state sur la page cible. Cela convient aux informations sensibles, aux données temporaires ou aux informations qui ne devraient pas figurer dans l'URL.

#Exemples

#Navigation de base

// Naviguer vers la liste des utilisateurs (ajoute une nouvelle entrée à l'historique, permet le retour)
ctx.router.navigate('/admin/users');

// Naviguer vers une page de détails
ctx.router.navigate(`/admin/users/${recordId}`);

#Remplacement de l'historique (pas de nouvelle entrée)

// Rediriger vers la page d'accueil après la connexion ; l'utilisateur ne reviendra pas à la page de connexion en faisant "retour"
ctx.router.navigate('/admin', { replace: true });

// Remplacer la page actuelle par la page de détails après une soumission de formulaire réussie
ctx.router.navigate(`/admin/users/${newId}`, { replace: true });

#Transmission d'un état (state)

// Transporter des données lors de la navigation ; la page cible les récupère via ctx.location.state
ctx.router.navigate('/admin/users/123', { 
  state: { from: 'dashboard', tab: 'profile' } 
});

#Retour et rafraîchissement

// Reculer d'une page
ctx.router.navigate(-1);

// Reculer de deux pages
ctx.router.navigate(-2);

// Rafraîchir la page actuelle
ctx.router.navigate(null);

#Relation avec ctx.route et ctx.location

UsageUtilisation recommandée
Navigation / Sautctx.router.navigate(path)
Lire le chemin actuelctx.route.pathname ou ctx.location.pathname
Lire l'état transmis lors de la navigationctx.location.state
Lire les paramètres de la routectx.route.params

ctx.router est responsable des « actions de navigation », tandis que ctx.route et ctx.location sont responsables de « l'état actuel de la route ».

#Remarques

  • navigate(path) ajoute par défaut une nouvelle entrée à l'historique, permettant aux utilisateurs de revenir via le bouton de retour du navigateur.
  • replace: true remplace l'entrée actuelle de l'historique sans en ajouter de nouvelle, ce qui est approprié pour des scénarios tels que la redirection après connexion ou la navigation après une soumission réussie.
  • Concernant le paramètre state :
    • Les données transmises via state n'apparaissent pas dans l'URL, ce qui les rend adaptées aux données sensibles ou temporaires.
    • Elles sont accessibles via ctx.location.state sur la page cible.
    • Le state est enregistré dans l'historique du navigateur et reste accessible lors de la navigation avant/arrière.
    • Le state sera perdu après un rafraîchissement forcé de la page.

#Relatif

  • ctx.route : Informations de correspondance de la route actuelle (pathname, params, etc.).
  • ctx.location : Emplacement URL actuel (pathname, search, hash, state) ; le state est lu ici après la navigation.