LaunchFast Logo LaunchFast

Uso de íconos de desconexión en Astro con React: una guía paso a paso

Rishi Raj Jain
Using Unplugin Icons in Astro with React

En esta guía, aprenderá cómo usar Unplugin Icons en una aplicación Astro usando React. Pasará por el proceso de configurar un nuevo proyecto Astro con React, configurar Desenchufe los íconos y utilícelos para aprovechar una gran colección de íconos en su aplicación

Requisitos previos

Necesitará lo siguiente:

Tabla de contenido

Crea una nueva aplicación Astro

Comencemos creando un nuevo proyecto Astro. Ejecute el siguiente comando:

npm create astro@latest my-app

npm create astro es la forma recomendada de desarrollar rápidamente un proyecto Astro

Cuando se le solicite, elija:

  • Empty cuando se le pregunta cómo iniciar el nuevo proyecto
  • cuando se le pregunte si planea escribir Typecript
  • Estricto cuando se le pregunta qué tan estricto debe ser Typecript.
  • cuando se le solicita instalar dependencias
  • cuando se le solicita inicializar un repositorio de git

Una vez hecho esto, puede ir al directorio del proyecto e iniciar la aplicación:

cd my-app
npm run dev

La aplicación debería estar ejecutándose en localhost:4321

Ahora, pasemos a integrar React en tu aplicación Astro.

Integra React en tu proyecto Astro

Ejecute el siguiente comando para integrar React en su proyecto Astro:

npx astro add react

npx nos permite ejecutar paquetes binarios npm sin tener que instalarlo primero globalmente

Cuando se le solicite, elija lo siguiente:

  • cuando se le pregunta si desea instalar las dependencias de React
  • cuando se le pregunta si desea realizar cambios en el archivo de configuración de Astro
  • cuando se le pregunta si desea realizar cambios en el archivo tsconfigjson

Ahora, pasemos a integrar Unplugin Icons en su aplicación Astro.

Integre íconos de desconexión en su proyecto Astro

Instalar las dependencias de Unplugin Icons

Ejecute los siguientes comandos para instalar los paquetes necesarios para usar Unplugin Icons con React en Astro:

# unplugin-icons package for Vite compiler
npm i -D unplugin-icons

# @iconify/json package for the icons collection
npm i -D @iconify/json

# @svgr/core and @svgr/plugin-jsx packages for React compatibility
npm i -D @svgr/core @svgr/plugin-jsx

El comando instala las siguientes bibliotecas:

  • unplugin-icons: un paquete para acceder a miles de iconos como componentes bajo demanda de forma universal
  • @iconify/json: una gran colección de íconos vectoriales de código abierto, todos validados, limpiados y convertidos al mismo formato fácil de usar.
  • @svgr/core: Un paquete para transformar SVG en componentes de React
  • @svgr/plugin-jsx: Un paquete para transformar SVG en JSX

Además, realice las siguientes adiciones en astroconfigmjs para usar la integración de Unplugin Icons:

// File: astro.config.mjs

import react from "@astrojs/react";
import Icons from "unplugin-icons/vite"; // [!code ++]
import { defineConfig } from "astro/config";

export default defineConfig({
  integrations: [
    react(),
    vite: { // [!code ++]
        plugins: [ // [!code ++]
            Icons({ // [!code ++]
                jsx: "react", // [!code ++]
                compiler: "jsx", // [!code ++]
                autoInstall: true, // [!code ++]
            }), // [!code ++]
            Icons({ // [!code ++]
                compiler: "astro", // [!code ++]
                autoInstall: true, // [!code ++]
            }), // [!code ++]
        ], // [!code ++]
    }, // [!code ++]
  ],
});

Como se aprendió en un [problema de GitHub] (https://githubcom/unplugin/unplugin-icons/issues/253), es aconsejable usar ambos modos de compilación, es decir, con React y Astro. Esto permite el uso de íconos de Unplugin en ambos React. y componentes Astro en su aplicación Astro

Crear definiciones de tipo para iconos de desconexión

Para asegurarse de que puede aprovechar las definiciones de tipo de los íconos de Unplugin usando React en Astro, querrá definir globalmente importaciones de íconos específicas como importaciones de componentes de React.

Para hacerlo, actualice envdts en el directorio src con el siguiente código:

/// <reference types="astro/client" />

declare module "virtual:icons/*" { // [!code ++]
    import type { SVGProps } from "react"; // [!code ++]
    import type React from "react"; // [!code ++]
    const component: (props: SVGProps<SVGSVGElement>) => React.ReactElement; // [!code ++]
    export default component; // [!code ++]
} // [!code ++]

El código anterior simplemente marca cada importación realizada a través de virtual:icons para que se considere como componentes de React en su aplicación Astro.### Utilice iconos de desconexión en la ruta de índice

Finalmente, importa el ícono y úsalo en tu componente Astro (o React) con el siguiente código:

---
import MdiAlarmOff from "virtual:icons/mdi/alarm-off";  // [!code ++]
---

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <meta name="viewport" content="width=device-width" />
    <meta name="generator" content={Astro.generator} />
    <title>Astro</title>
  </head>
  <body>
    <h1>Astro</h1>
    <MdiAlarmOff client:load /> // [!code ++]
  </body>
</html>

El código anterior importa un ícono como componente de React en la ruta de índice

¡Ya terminaste!

Cree y pruebe su aplicación Astro localmente

Para probar la aplicación, prepare una compilación y ejecute el servidor de vista previa usando el siguiente comando:

npm run build && npm run preview

Conclusión

En esta guía, aprendió cómo usar Unplugin Icons con React en una aplicación Astro.

Si tiene alguna pregunta o comentario, no dude en comunicarse conmigo en Twitter

Learn More Cree un bot de Telegram en el enrutador de aplicaciones Next.js: una guía paso a paso → Inyectar variables de entorno dinámicamente en páginas de Cloudflare → Uso de iconos de desconexión en Next.js: una guía paso a paso →