Aquí tenemos el estudio de Sanity de un falso minorista de dulces en línea. Ahora, tu estudio puede verse algo diferente al nuestro, pero este es el que hemos modelado con páginas, artículos, pero lo más importante, echemos un vistazo a los banners.
Estos son los banners que vamos a mostrar a los visitantes a medida que llegan a la página, y dependerá del país en el que se encuentren. Estoy en el Reino Unido, así que quiero asegurarme de que vean este contenido aquí. En primer lugar, tenemos un menú desplegable aquí, que se rellena con una lista de países que provienen de un paquete npm, y este es el beneficio de contenido estructurado en archivos JavaScript, es que te permite crear un esquema casi infinitamente configurable.
Luego tenemos un campo de texto aquí para el título, un campo de texto para el contenido y un campo de imagen donde hemos incluido una encantadora imagen del Reino Unido de una fuente de activos de Unsplash. Así que ese es el banner que queremos mostrar a los visitantes, y veamos cómo se verá eso. Ya he visitado esta página antes, así que no me envían ese banner, pero si entro en una nueva ventana de incógnito, aquí se me muestra ese banner porque aquí es donde estoy. Entonces, ¿cómo funciona esto? Vamos a ver un poco de código.
Vamos a echar un vistazo rápido a esto. Los conceptos aquí son bastante sencillos, y tal vez podamos hacer que este código también esté disponible. Pero aquí está el componente de banner que estamos viendo. Entonces, puedes ver en la parte superior, la función get banner URL aquí va a enviar una solicitud a la ruta de la API. Las rutas de API son una forma de ejecutar lógica en el lado del servidor en un sitio web de Next.js. Pero nuevamente, la mayoría de las tecnologías JAMstack tienen conceptos similares para ejecutar funciones sin servidor para modificar páginas. Y he agregado un respaldo aquí para que durante el desarrollo, simplemente pueda establecer el país en una cadena de consulta, o de lo contrario, si estoy en producción, ir y llamar a esa API de la ruta de obtener banner directamente.
Ahora, aquí el componente de banner va a configurar un estado y también va a realizar un seguimiento utilizando este hook de estado pegajoso, que lo único que hace es asegurarse de registrar alguna información en el almacenamiento local. Y vamos a almacenar la fecha en que vi este banner. Y sería posible extender este componente para decir, si no he visto este banner durante, digamos, 24 horas, podría mostrarse nuevamente. Entonces, lo que vamos a hacer aquí cuando se monta el componente es primero obtener esta URL del banner. Y si el estado no es correcto, vamos a establecer que se ha visto el banner o si está vacío por alguna razón, no queremos hacer eso. Pero si la información del banner se devuelve correctamente, entonces queremos establecer eso en el componente y luego establecer que se ha visto el banner. Y si no tenemos ningún data porque ya hemos visto esto antes o el fetch falló y no se devolvió ningún data, entonces este componente no hace nada. Sin embargo, si obtenemos data del banner, entonces tenemos un poco de animación y estilo para cargar ese componente en la vista con una bonita animación y estilo. Así que echemos un vistazo a nuestra ruta de API. Entonces, cuando llega la solicitud a esta ruta de API, primero se va a verificar qué información del país tenemos. Primero, se va a verificar, ¿hemos anulado esto manualmente? Tal vez haya casos de uso para establecer manualmente el país aquí. De lo contrario, podemos verificar los encabezados en ciertos planes. En Vercel, obtienes información sobre el país basada en la IP. También hay paquetes de NPM que te permiten hacer eso. Y muchos otros proveedores enviarán esa información junto con las solicitudes, como la ubicación del usuario.
Comments