Skip to content

El Motor de Renderizado

Sistema que controla cómo se renderiza cada tipo de componente — el "puente" entre componentes React/Vue y lógica de presentación.

Renderer

El Sistema de Renderer decide qué wrapper usar para cada tipo de componente:

🔧 Qué Son los Renderers:

Tipo de RendererFunciónUsado ParaEjemplo
fieldRenderiza campos de formularioInputText, Select, etc.Añade validación automática
containerRenderiza contenedores de formularioFormGroup, SectionOrganiza layout
menu-itemRenderiza elementos de menúMenuLink, MenuButtonAñade navegación
menu-containerRenderiza contenedores de menúMenuContainerOrganiza jerarquía
contentRenderiza contenido estáticoText, ImageVisualización simple

📊 Cómo Funcionan:

Componente → Renderer → DOM

text
InputText Component → FieldRenderer → <input> + validación + props

El Renderer Añade:

  • Pipeline de middleware automático
  • Inyección de contexto (formulario, menú)
  • Transformación de props específica del tipo
  • Error boundaries integrados

💡 Resultado: ¡Los componentes se enfocan en UI, los Renderers se enfocan en lógica de presentación!

🚀 Tipos de Renderer

Cada tipo de renderer tiene responsabilidades específicas:

📝 Field Renderer - Campos de Formulario:

ResponsabilidadImplementaciónBeneficio
Integración de FormulariouseFormContext() automáticoProps de formulario inyectadas
Pipeline de ValidaciónwithCpfValidation, withRulesValidación automática
Props DinámicasuseReactions()Props cambian basadas en estado
Integración de DebuguseDebug()Debug visual automático

🏗️ Container Renderer - Layout y Organización:

ResponsabilidadImplementaciónBeneficio
Ordenamiento de HijosOrdenamiento x-ui.orderLayout automático
Filtrado de PropsEliminar props de contenedorProps limpias
Lógica de LayoutLayout responsivoUI adaptativa
Gestión de SeccionesAgrupar elementos relacionadosOrganización visual

🧭 Menu Renderers - Navegación:

RendererFunciónCaracterísticas
menu-itemElementos de menú individualesManejo de enlaces, estados activos
menu-containerOrganización de menúJerarquía, ordenamiento, responsivo

📄 Content Renderer - Visualización:

FunciónUsoCaracterísticas
Contenido EstáticoTexto, imágenes, etc.Sin integración de formulario
Procesamiento MínimoRenderizado directoRendimiento optimizado

⚙️ Cómo Funciona el Sistema

Flujo conceptual de cómo los renderers procesan componentes:

🔄 Pipeline de Resolución:

Schema JSON

Detectar Tipo (¿Qué renderer usar?)

Obtener Renderer (En jerarquía de prioridad)

Preparar Props (Fusionar + contexto)

Aplicar Middleware (Transformar + validar)

Renderizar (Componente + wrapper)

Elemento React/Vue Final

🎯 Jerarquía de Resolución:

Cómo el sistema elige qué renderer usar:

PrioridadFuenteCuándo UsarEjemplo
1ra - LocalProps de factoryPersonalización específica<FormFactory renderers=\{\{field: CustomField\}\} />
2da - GlobalscheptaProviderPredeterminado de aplicación<scheptaProvider renderers=\{\{field: AppField\}\} />
3ra - RegistroregisterRenderer()Extensiones globalesregisterRenderer('field', LibField)
4ta - PredeterminadoSistema integradoComportamiento predeterminadoFieldRenderer interno

⚡ Orquestador Central:

El "director" que coordina todo el proceso:

Responsabilidades:

  • Detecta qué tipo de componente renderizar
  • Elige el renderer apropiado de la jerarquía
  • Prepara props fusionando contextos
  • Aplica pipeline de middleware específico del tipo
  • Renderiza el componente final con su wrapper

🤝 Por Qué Existen los Renderers

Los problemas que el sistema de renderers resuelve:

🎯 Separación de Responsabilidades:

Sin renderers, cada componente necesita:

  • Mezclar lógica de UI con lógica de negocio
  • Gestionar contexto manual e inconsistentemente
  • Implementar validación específica del tipo en cada campo
  • Transformar props de manera ad-hoc y no estandarizada

Con renderers, los componentes se vuelven:

  • Más limpios: enfoque exclusivo en presentación visual
  • Más consistentes: inyección de contexto automática y estandarizada
  • Más reutilizables: validación y lógica encapsuladas en el renderer
  • Más predecibles: transformación de props sigue patrones establecidos

🔄 Flexibilidad del Sistema:

El mismo componente puede tener diferentes comportamientos:

  • Campo de Formulario: FieldRenderer añade validación + integración de formulario
  • Visualización Solo Lectura: ContentRenderer mantiene visualización simple, sin lógica de formulario
  • Elemento de Menú: ItemRenderer añade navegación + estado activo
  • App Personalizada: CustomRenderer implementa comportamiento específico de la aplicación

Esto permite: apps multi-tenant, A/B testing, integración con diferentes librerías de UI, y extensiones personalizadas sin modificar componentes base.

💡 Conceptos Relacionados

Los Renderers son el "motor" que conecta otros conceptos: