Ir al contenido principal

Head, Link y usePage from @inertiajs/react

 ¿Qué significa el siguiente código?

import { Head, Link, usePage } from '@inertiajs/react';



Este fragmento de código es una declaración de importación de JavaScript (ES Modules).

Indica que se están importando tres elementos específicos desde la librería @inertiajs/react para ser utilizados en el archivo donde se encuentra esta línea de código.


Desglose de cada elemento importado:

  1. Head:

    • ¿Qué es? Es un componente de React proporcionado por Inertia.js.

    • Función: Permite modificar el contenido de la sección <head> de tu documento HTML directamente desde tus componentes de React. Piensa en ello como una forma de controlar elementos como el título de la página (<title>), meta etiquetas (<meta name="description" content="...">), enlaces a hojas de estilo externas (<link rel="stylesheet" href="...">), o incluso scripts (<script>), de forma dinámica y declarativa dentro de tu aplicación SPA.

    • Uso típico: Lo usarías para establecer el título de la página cuando el usuario navega a una nueva vista o para cambiar meta descripciones para SEO.

      JavaScript
      <Head title="Mi Página de Perfil" />
      
  2. Link:

    • ¿Qué es? Es un componente de React proporcionado por Inertia.js que actúa como un reemplazo inteligente para las etiquetas <a> de HTML.

    • Función: En una aplicación SPA (Single Page Application) como las que construye Inertia, no quieres que cada clic en un enlace recargue la página completa (lo que ocurriría con un <a> tradicional). El componente Link de Inertia intercepta los clics en los enlaces y realiza una solicitud AJAX al servidor de Laravel, actualizando solo el contenido de la página sin una recarga completa. Esto es lo que le da la sensación de una SPA.

    • Uso típico: Para cualquier enlace de navegación interno en tu aplicación.

      JavaScript
      <Link href="/dashboard">Ir al Dashboard</Link>
      <Link href="/logout" method="post" as="button" type="button">Cerrar Sesión</Link>
      
  3. usePage:

    • ¿Qué es? Es un Hook de React proporcionado por Inertia.js.

    • Función: Permite acceder a los props (datos) y otros metadatos de la página actual que han sido compartidos por el backend de Laravel. Cuando un controlador de Laravel renderiza una página de Inertia (ej. return Inertia::render('MyPage', ['user' => $user]);), esos datos (user en este caso) están disponibles en el frontend a través de usePage().

    • Uso típico: Para obtener los datos que tu backend te pasó, o para acceder a datos globales compartidos con todas las páginas (como el usuario autenticado).

      JavaScript
      import { usePage } from '@inertiajs/react';
      
      function UserProfile() {
        const { props } = usePage(); // Accede a todos los props
        const user = props.user; // O si el prop se llama 'user' directamente
        // const { user } = usePage().props; // Otra forma común
      
        return (
          <div>
            <h1>Bienvenido, {user.name}</h1>
            <p>Email: {user.email}</p>
          </div>
        );
      }
      

En resumen:

Este fragmento de código es la base para construir las interfaces de usuario en el frontend de una aplicación Laravel con Inertia.js y React. Proporciona las herramientas esenciales para:

  • Controlar los elementos de la etiqueta <head> de la página (Head).

  • Manejar la navegación interna de la SPA (Link).

  • Acceder a los datos compartidos desde el backend de Laravel (usePage).

Juntos, estos elementos facilitan la creación de una aplicación React de una sola página que se siente como una aplicación cliente-servidor tradicional, pero con la interactividad y la fluidez de una SPA.

Comentarios

Entradas populares de este blog

Crear proyecto de frontend con Vite, React, Tailwind, Typescript y JSX

 ¿Cómo se crea un proyecto exclusivo de frontend con Vite, React, Tailwind, Typescript y JSX? ¡Absolutamente! Entiendo que quieres la guía completa para pasar de cero a tener un proyecto de frontend moderno, vacío y listo para ser llenado con tu código. A continuación, te proporciono un archivo de guía detallada que incluye todos los comandos necesarios para inicializar el proyecto, configurar Tailwind CSS, y los pasos clave para empezar a "poblarlo". Voy a generar un documento Markdown con la guía paso a paso, incluyendo los comandos de terminal y las modificaciones esenciales a los archivos de configuración. Guía: Creación de un Proyecto Frontend Puro (Vite, React, TypeScript, Tailwind) Este documento detalla el proceso para inicializar un proyecto de frontend vacío y optimizado, utilizando Vite como empaquetador, React como librería, TypeScript para tipado y Tailwind CSS para estilizado. 1. Inicialización del Proyecto con Vite Vite es la herramienta más rápida para emp...

Tokens V2

Tokens: Programme to discover tokens, where there are not. Now available at  https://puszcza.gnu.org.ua/projects/tokens/ This is Version 2, for  version 1, go here . Synopsis: use TokensV2; sub printFile; my @FORMAT = ( ['<Message Date=".*?" Time=".*?" DateTime=".*?" SessionID=".*?"><From>(?:<User FriendlyName=".*?"/>)+</From><To>(?:<User FriendlyName=".*?"/>)+</To><Text(?: Style=".*?")?>.*?</Text></Message>',   sub {     my $fh = $_[1];     my ($d, $t, $f, $s, $T) = $_[0] =~ m|<Message Date="(.*?)" Time="(.*?)" DateTime=".*?" SessionID=".*?">(<From>(?:<User FriendlyName=".*?"/>)+</From>)<To>(?:<User FriendlyName=".*?"/>)+</To><Text(?: Style="(.*?)")?>(.*?)</Text></Message>|;     my $F = join '<br />', ...

Perl Net::LDAP::SimpleServer

Adaptaciones sobre el módulo LDAP Server para Windows (Strawberry Perl) Lista de adaptaciones (continúa más abajo): - Relajación de condiciones de bind:     - Cuenta principal (principal account)     - Validación de contraseñas Ubicación del archivo: %Strawberry_Perl%\site\lib\net\ldap\SimpleServer\ProtocolHandler.pm CPAN: http://search.cpan.org/~russoz/Net-LDAP-SimpleServer-0.0.17/lib/Net/LDAP/SimpleServer.pm Código: package Net::LDAP::SimpleServer::ProtocolHandler; use strict; use warnings; # ABSTRACT: LDAP protocol handler used with Net::LDAP::SimpleServer our $VERSION = '0.0.17';    # VERSION use Net::LDAP::Server; use base 'Net::LDAP::Server'; use fields qw(store root_dn root_pw allow_anon); use Carp; use Net::LDAP::LDIF; use Net::LDAP::Util qw{canonical_dn}; use Net::LDAP::FilterMatch; use Net::LDAP::Constant (     qw/LDAP_SUCCESS LDAP_AUTH_UNKNOWN LDAP_INVALID_CREDENTIALS/,   ...