Fundamentos modernos y primera interacción con ia. Parte 3

Uniendo las piezas: Creanndo la interfaz de usuario en esta secon final, construiremos la interfaz de usuario (ui) que consumá nuestra servidor de ação generateclickbaittitles. Os componentes de componentes de React que Discutimos en Teoría, Creanndo Una Experiencia de Usuario Fluida, um Pesar de la Potencial Latencia de la Llamada a la ia. Componente de cliente da UI UI Será Un, Ya Que Necesita Manejar el Estado del Formulario, la Entrada del Usuario y la Respuesta de la Acción. Podrás Encontrar El Código de Este Artículo EN: Paso 1: Crear El Componente de la Página Principal Vamos um modificar El Archivo Src/App/Page.TSX Para que contenados. Reemplaza el contenido de src/app/page.tsx con el siguiente código: // src/app/page.tsx ‘use client’; importar {usestate} de ‘react’; importar {generateclickbaittitles} de ‘@/lib/ai/ações’; Importar tipo {z} de ‘zod’; Importar tipo {aititlesOutputSchema} de ‘@/lib/validations/esquemas’; // Definimos Un Tipo Tipo local para el Estado de Los Resultados Type TitlesData = Z.infer; exportar função padrão homepage () {// estado para manejar el estado de carga de la servidor ação const [isLoading, setIsLoading] = Usestate(falso); // Estado para Almacenar Los Títulos Gerados por La ia Const [titlesData, setTitlesData] = Usestate(nulo); // Estado para Manejar Cualquier Erro devuelto por la acción const [error, setError] = Usestate(nulo); const handleSubmit = assíncrono (evento: react.formEvent) => {event.preventDefault (); Setisloading (true); setError (nulo); SettitLesdata (NULL); const formData = new FormData (event.currentTarget); const artigoUrl = formData.get (‘Artigourl’) como string; const resultado = aguarda generateclickbaittitles ({articleRl}); if (result.success) {SettitLesdata (resultado.data); } else {setError (resultado.error); } SetILLoading (false); }; retornar (

Gerador de Títulos Virales

); } Entre no modo de tela cheia de saída de tela cheia Paso 2: Añadir Estilos Básicos para Que El Spinner de Carga Funcione, añade la animación spin a tu globals.css Si no estuviera ya definida porwwind css. // src/app/globals.css @import “Tailwindcss”; : root { – -background: #1d293d; –foreground: #ffffff; } @theme inline {–color-background: var (-background); –Cor-Forgryground: var (-primeiro plano); –font-SANS: var (-font-geist-sans); –font-mono: var (-font-geist-mono); } @media (prefere-color-scheme: escuro) {: root {–background: #0a0a0a; –foreground: #eded; }} corpo {background: var (-background); Cor: var (-primeiro plano); Font-Family: Arial, Helvetica, Sans-Serif; } @keyframes spin {de {transform: girtate (0deg); } para {transform: girate (360deg); }} .animate spin {animação: spin 1s infinito linear; } Digite o modo de tela cheia de saída de tela cheia análisis del componente de ui ‘use client’: es La Primera y más importante línea. Declara La Frontera Entre El Servidor y El Cliente. TODO Este Archivo y Sus DependEncias (Ações do servidor LAS de excluindo) Se ejecutarán en el navegador. Manejo de Estado (Usestate): Isloading: ONU Booleano Pero eFectivo para Gestionar El Estado de la Ui Durente la Petición. Deshabilita el formulario para prevenir Envíos duplicados y muestra un indicador de carga. Titlesdata: Almacena la Respuesta exitosa. Su Tipo, Titlesdata, Se Infiere Directament de Nuestro Esquema AititlesOutputschema, Manteniendo La Constitucia de Tipos de Extremo A extremro. Erro: Almacena El Mensaje de Erro De la Server Ação, Permitiéndonos Mostar Feedback Útil al usuario. Invocacación de la Servidor Ação: La línea const resultado = aguarda generateclickbaittitles ({articleRl}); ES DONDE OCURRE LA MAGIA. Invocacación Directa: Observa que não há busca de feno, sem urls de feno de api, sem efeito de uso do feno. Importamos generateclickbaittitles como si fuuera una función local y la llamamos diretament. A seguir. Estoes Una de Las Mayores Ventajas de la Arquitectura del App Router. Manejo de la Respuesta: el objeto discriminate Que Diseñamos en Nuestra Server Action ({Sucesso, Dados | Erro}) Hace que El Manejo de la Respuesta en Cliente Sea Limpio, precesível y Seguro. Renderizado condicional: La Ui Reacciona A Los DiFerentes Estados (Isloading, Error, Titlesdata) para Mostar Siempre La Información Más Relevante: El Formulario, ONU Spinner, UN mensaje de erro de resultado. Estes un -patrón fundamental em el desarrollo de uis modernnas y robustas. 1.12 EJECUCION y Verificador final Guarda ToDos Los Arquivos y Ejecta Tu Aplicación de DeSarrollo: pnpm Dev Digite o modo de tela full de tela cheia Navega A Deberías ver El Formulario. Prueba Los Siguientes Escenarios: Caso de Éxito: Introduzir Una Url Válida (Ej. Y Haz clic en (EJ. Texto-Invalido). RECOJAN TODA ESTA INFORMAÇÃO, PERO DE MOMENTO PODEMOS SUCERSAR LA TERMINAL PARA DETECTAR EL ERRO. Response Llega. UNA Perspectiva Senior: Arquitectura sólida: implementou UNA Separación Clara Entre la lógica de servidor (ação do servidor) y la presente (componente cliente), utilizando el paradigma de next.js App Router. LOS DATOS DESDE LA Entrada del Usuario Hasta la Salida de la ia, previnienda una clase entera de erros de tempo de execução. Fragilidad del Parseo Manual de Json. Ações de Aquí – Server, Validación ConD, Streaming (Que Exploraremos um Fondo), Y la Abstacción del Sdk – Será Una Pieza Fundamental En Los Sistemas Más Segundo o Estrume Puedesn Termondosn Coson ELSOIROS CELOS CELOS. Dominas La Interacción Básica, Estás Listo para llevar tus applicacionas al siguientte nivel: la conversación en tiempo real.

Fonte

Você pode ter perdido