logologo
Empezar
Manual
Desarrollo
Plugins
API
Inicio
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Empezar
Manual
Desarrollo
Plugins
API
Inicio
logologo
Descripción general de RunJS
Importación de módulos
Renderizado en contenedor

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()
Aviso de traducción IA

Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.

#ctx.router

Instancia de enrutador basada en React Router, utilizada para la navegación mediante código dentro de RunJS. Generalmente se utiliza en conjunto con ctx.route y ctx.location.

#Casos de uso

EscenarioDescripción
JSBlock / JSFieldNavegar a páginas de detalles, páginas de lista o enlaces externos tras hacer clic en un botón.
Reglas de enlace / Flujo de eventosEjecutar navigate hacia una lista o detalle después de un envío exitoso, o pasar un state a la página de destino.
JSAction / Manejo de eventosEjecutar la navegación de rutas dentro de la lógica de envíos de formularios o clics en enlaces.
Navegación de vistasActualizar la URL a través de navigate durante el cambio de la pila de vistas internas.

Nota: ctx.router solo está disponible en entornos RunJS que cuenten con un contexto de enrutamiento (por ejemplo, JSBlock dentro de una página, páginas de flujo, flujos de eventos, etc.); puede ser nulo en contextos puramente de backend o sin enrutamiento (como los flujos de trabajo).

#Definición de tipo

router: Router

Router proviene de @remix-run/router. En RunJS, las operaciones de navegación como saltar, retroceder y actualizar se implementan a través de ctx.router.navigate().

#Métodos

#ctx.router.navigate()

Navega hacia una ruta de destino o ejecuta una acción de retroceso/actualización.

Firma:

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

Parámetros:

  • to: Ruta de destino (string), posición relativa en el historial (number, por ejemplo, -1 para retroceder) o null (para actualizar la página actual).
  • options: Configuración opcional.
    • replace?: boolean: Indica si se debe reemplazar la entrada actual en el historial (el valor predeterminado es false, lo que añade una nueva entrada).
    • state?: any: Estado que se pasará a la ruta de destino. Estos datos no aparecen en la URL y se puede acceder a ellos mediante ctx.location.state en la página de destino. Es adecuado para información sensible, datos temporales o información que no deba colocarse en la URL.

#Ejemplos

#Navegación básica

// Navegar a la lista de usuarios (añade una nueva entrada al historial, permite retroceder)
ctx.router.navigate('/admin/users');

// Navegar a una página de detalles
ctx.router.navigate(`/admin/users/${recordId}`);

#Reemplazar el historial (sin nueva entrada)

// Redirigir a la página de inicio tras el inicio de sesión; el usuario no volverá a la página de inicio de sesión al retroceder
ctx.router.navigate('/admin', { replace: true });

// Reemplazar la página actual con la página de detalles tras un envío de formulario exitoso
ctx.router.navigate(`/admin/users/${newId}`, { replace: true });

#Pasar un state

// Llevar datos durante la navegación; la página de destino los recupera mediante ctx.location.state
ctx.router.navigate('/admin/users/123', { 
  state: { from: 'dashboard', tab: 'profile' } 
});

#Retroceder y actualizar

// Retroceder una página
ctx.router.navigate(-1);

// Retroceder dos páginas
ctx.router.navigate(-2);

// Actualizar la página actual
ctx.router.navigate(null);

#Relación con ctx.route y ctx.location

PropósitoUso recomendado
Navegación / Saltoctx.router.navigate(path)
Leer la ruta actualctx.route.pathname o ctx.location.pathname
Leer el state pasado durante la navegaciónctx.location.state
Leer los parámetros de la rutactx.route.params

ctx.router es responsable de las "acciones de navegación", mientras que ctx.route y ctx.location son responsables del "estado de la ruta actual".

#Notas

  • navigate(path) añade una nueva entrada al historial por defecto, permitiendo a los usuarios regresar mediante el botón de retroceso del navegador.
  • replace: true reemplaza la entrada actual del historial sin añadir una nueva, lo cual es adecuado para escenarios como la redirección tras el inicio de sesión o la navegación tras un envío exitoso.
  • Sobre el parámetro state:
    • Los datos pasados a través de state no aparecen en la URL, lo que los hace adecuados para datos sensibles o temporales.
    • Se puede acceder a ellos mediante ctx.location.state en la página de destino.
    • state se guarda en el historial del navegador y permanece accesible durante la navegación hacia adelante o hacia atrás.
    • El state se perderá tras una actualización completa de la página.

#Relacionado

  • ctx.route: Información de coincidencia de la ruta actual (pathname, params, etc.).
  • ctx.location: Ubicación actual de la URL (pathname, search, hash, state); el state se lee aquí después de la navegación.