React Tutorial: Bilder und Font Awesome Icons
In diesem Tutorial lernst du, wie du professionell mit Bildern und Icons (Font Awesome) in einem React-Projekt arbeitest.
Bilder und Icons sind essenziell für ein modernes UI/UX-Design. In React gibt es spezielle Best Practices, wie man diese Assets einbindet.
Teil 1: Bilder in React verwenden
Es gibt zwei Hauptwege, um Bilder in React einzubinden: über den src-Ordner oder den public-Ordner.
1.1 Bilder aus dem src-Ordner (Empfohlen)
Wenn du Bilder in src/assets speicherst, werden sie vom Build-Tool (wie Webpack oder Vite) verarbeitet, optimiert und erhalten einen Hash-Namen für das Caching.
Schritte:
- Erstelle einen Ordner
src/assets. - Importiere das Bild oben in deiner Komponente.
- Nutze die Variable im
src-Attribut des<img>-Tags.
import React from 'react';
import meinBild from './assets/beispiel.jpg'; // Import des Bildes
function Header() {
return (
<div>
<h1>Willkommen zu meinem Projekt</h1>
<img
src={meinBild}
alt="Beschreibung des Bildes"
style={{ width: '300px', borderRadius: '10px' }}
/>
</div>
);
}
export default Header;
1.2 Bilder aus dem public-Ordner
Bilder im public-Ordner werden nicht vom Build-Prozess angefasst. Du kannst sie direkt per Pfad ansprechen.
// Wenn das Bild unter public/logo.png liegt:
<img src="/logo.png" alt="Logo" />
Wann nutzen? Für Icons (favicon), manifest.json oder wenn du tausende Bilder hast, die nicht alle importiert werden sollen.
Teil 2: Font Awesome Icons in React
Die Verwendung von Font Awesome in React unterscheidet sich von Standard-HTML. Wir nutzen die offizielle React-Komponente, da diese performanter ist (SVG-basiert) und besser in den Komponenten-Lifecycle passt.
2.1 Installation
Öffne dein Terminal im Projektordner und installiere die notwendigen Pakete:
# Kern-Paket und SVG-Icons
npm install @fortawesome/fontawesome-svg-core @fortawesome/free-solid-svg-icons @fortawesome/react-fontawesome
# Optional: Regular Icons oder Brand Icons (Facebook, Twitter etc.)
npm install @fortawesome/free-regular-svg-icons @fortawesome/free-brands-svg-icons
2.2 Icons einbinden und verwenden
In React importierst du jedes Icon einzeln. Das hält dein Bundle klein (Tree Shaking).
Beispiel-Komponente:
import React from 'react';
// 1. Importiere die FontAwesome-Komponente
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
// 2. Importiere die spezifischen Icons
import { faUser, faEnvelope, faCoffee } from '@fortawesome/free-solid-svg-icons';
import { faGithub } from '@fortawesome/free-brands-svg-icons';
function ContactCard() {
return (
<div style={{ padding: '20px', border: '1px solid #ccc' }}>
<h2> <FontAwesomeIcon icon={faUser} /> Benutzerprofil</h2>
<p>
<FontAwesomeIcon icon={faEnvelope} style={{ color: 'blue', marginRight: '10px' }} />
email@beispiel.de
</p>
<p>
<FontAwesomeIcon icon={faCoffee} size="2x" spin /> {/* Icon dreht sich! */}
Pause machen...
</p>
<a href="https://github.com">
<FontAwesomeIcon icon={faGithub} size="3x" />
</a>
</div>
);
}
export default ContactCard;
2.3 Wichtige Props für FontAwesomeIcon
| Prop | Beschreibung | Beispiel |
|---|---|---|
icon |
Das importierte Icon-Objekt | icon={faCoffee} |
size |
Größe (xs, sm, lg, 1x bis 10x) | size="2x" |
color |
Farbe des Icons | color="red" |
spin |
Animiert das Icon (drehend) | spin (boolean) |
pulse |
Dreht das Icon in 8 Schritten | pulse |
rotation |
Drehung in Grad | rotation={90} |
Teil 3: Best Practices & Tipps
- Alt-Texte: Vergiss niemals das
alt-Attribut bei<img>-Tags für die Barrierefreiheit (SEO & Screenreader). - Namenskonvention: In React werden Font Awesome Icons in CamelCase geschrieben (aus
fa-user-circlewirdfaUserCircle). - Ordnerstruktur:
src/assets/images: Für Fotos/Grafiken.src/components/common/Icon.js: (Optional) Erstelle eine eigene Wrapper-Komponente, falls du Icons projektweit einheitlich stylen willst.
- Vermeide große Bundles: Importiere Icons niemals so:
import { ... } from '@fortawesome/free-solid-svg-icons'. Importiere nur das, was du wirklich brauchst.
Zusammenfassung
- Bilder: Nutze
importfür Bilder insrc, um von der Optimierung der Build-Tools zu profitieren. - Icons: Nutze das Paket
@fortawesome/react-fontawesome. Es ist sauberer, skalierbar und lässt sich einfach über Props steuern.
Viel Erfolg bei deinem React-Projekt! 🚀