Voyons les modèles de conception React et les meilleures pratiques pour 2025 afin que vous puissiez créer des applications plus robustes et maintenables.
Réagir a parcouru un long chemin depuis son Première sortie en 2013. Ce qui a commencé comme une bibliothèque pour la construction d’interfaces utilisateur est devenu un écosystème complet pour développer des applications Web modernes. Avec Réagir les années 19 Libération stable à la fin de 2024 et à la maturation continue de l’écosystème, les développeurs ont désormais accès à de puissantes fonctionnalités qui rationalisent les flux de travail de développement et améliorent les performances des applications.
Dans cet article, nous explorerons les modèles de conception React et les meilleures pratiques pour 2025. Nous examinerons comment les modèles de composants modernes, les approches de gestion de l’État, l’intégration de typeScript et les dernières fonctionnalités React 19 peuvent vous aider à créer des applications plus robustes et maintenables.
Modèles de composants modernes
Composants de fonction comme standard
Les composants de la fonction sont devenus la norme de facto pour le développement de la réact, en remplacement composants de classe pour pratiquement tous les cas d’utilisation. Ce changement reflète l’évolution de React vers un paradigme de programmation plus fonctionnel, mettant l’accent sur la simplicité et la composabilité.
function UserProfile({ userId }) {
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
async function fetchUser() {
setLoading(true);
try {
const userData = await fetchUserData(userId);
setUser(userData);
} catch (error) {
console.error("Failed to fetch user data:", error);
} finally {
setLoading(false);
}
}
fetchUser();
}, [userId]);
if (loading) return <LoadingSpinner />;
if (!user) return <ErrorMessage message="User not found" />;
return (
<div className="user-profile">
<h2>{user.name}</h2>
<p>{user.email}</p>
{}
</div>
);
}
Ci-dessus UserProfile
Utilisations des composants crochets Pour récupérer et afficher les données utilisateur en fonction d’un ID donné, gérer les états de chargement et d’erreur en cours de route.
Les composants de la fonction suivent un modèle de sortie d’entrée simple, ce qui les rend plus faciles à comprendre et à tester. Ils permettent également d’utiliser le système Hooks de React pour la gestion de l’État et les événements de cycle de vie.
UNE NOUVEAU AU COREUX DE REACT DE REACT?
Vérifier Ce guide pour utiliser et Cette plongée profonde sur l’utilisation d’effet pour mieux comprendre comment ils alimentent les composants de la fonction.
Crochets personnalisés pour la réutilisabilité logique
Les crochets personnalisés représentent l’un des modèles les plus puissants du développement de la réaction moderne. Ils permettent l’extraction de la logique avec état dans des fonctions réutilisables, favorisant la réutilisation du code et la séparation des préoccupations.
Dans l’exemple ci-dessous, un useFormInput
Le crochet personnalisé gère l’état et le comportement d’entrée du formulaire, permettant aux composants de réutiliser facilement cette logique d’entrée cohérente.
function useFormInput(initialValue) {
const [value, setValue] = useState(initialValue);
function handleChange(e) {
setValue(e.target.value);
}
return {
value,
onChange: handleChange,
reset: () => setValue(initialValue),
};
}
function LoginForm() {
const email = useFormInput("");
const password = useFormInput("");
function handleSubmit(e) {
e.preventDefault();
email.reset();
password.reset();
}
return (
<form onSubmit={handleSubmit}>
<input type="email" placeholder="Email" {...email} />
<input type="password" placeholder="Password" {...password} />
<button type="submit">Login</button>
</form>
);
}
Les crochets personnalisés peuvent aider à extraire des composants logiques complexes, ce qui les rend plus axés sur le rendu. La même logique peut être partagée sur plusieurs composants sans duplication, et les crochets personnalisés peuvent être testés indépendamment des composants utilisés.
Gestion de l’État
API de contexte pour l’état à l’échelle de l’application
L’API de contexte a mûri une solution raisonnable pour gérer l’état à l’échelle de l’application, réduisant le besoin de bibliothèques de gestion externe des États. Avec React 19, le API de contexte est devenu encore plus puissant en introduisant le Utiliser la fonction pour accéder aux valeurs de contexte.
const ThemeContext = createContext({
theme: "light",
toggleTheme: () => {},
});
function ThemeProvider({ children }) {
const [theme, setTheme] = useState("light");
const toggleTheme = () => {
setTheme((prevTheme) => (prevTheme === "light" ? "dark" : "light"));
};
const value = { theme, toggleTheme };
return <ThemeContext value={value}>{children}</ThemeContext>;
}
function ThemedButton({ variant }) {
if (variant === "primary") {
const { theme, toggleTheme } = use(ThemeContext);
return (
<button className={`btn-${variant} ${theme}`} onClick={toggleTheme}>
Toggle Theme
</button>
);
}
return <button className={`btn-${variant}`}>Regular Button</button>;
}
L’exemple ci-dessus met en place un contexte de thème et un fournisseur, permettant des composants comme ThemedButton
pour accéder et mettre à jour le thème actuel en utilisant le nouveau use()
API introduite dans React 19.
L’API de contexte est bien adaptée à la gestion du thème, à l’authentification des utilisateurs, à la localisation et aux indicateurs de fonctionnalité dans une application.
💡Vant une compréhension plus profonde du moment et de la façon d’utiliser le contexte de la réaction?
Jeter un œil à Cet article sur React Context pour une explication claire de son cas d’utilisation et de son avantage.
Manuscrit
Manuscrit est devenu une partie intégrante du développement de React, de nombreux nouveaux projets dans l’industrie l’adoptant dès le départ. Les avantages de l’utilisation de TypeScript avec React incluent la sécurité de type en attrapant des erreurs liées au type au moment de la compilation plutôt que de l’exécution, de l’amélioration de l’expérience des développeurs avec un support IDE amélioré et du code d’auto-documentation avec des annotations de type servant de documentation.
Composants et accessoires
TypeScript permet la création de composants de type type avec des interfaces d’accessoires bien définis:
interface UserCardProps {
user: {
id: number,
name: string,
email: string,
role: "admin" | "user" | "guest",
profileImage?: string,
};
onEdit?: (userId: number) => void;
variant?: "compact" | "detailed";
}
function UserCard({ user, onEdit, variant = "detailed" }: UserCardProps) {
return (
<div className={`user-card ${variant}`}>
{user.profileImage && (
<img src={user.profileImage} alt={`${user.name}'s profile`} />
)}
<h3>{user.name}</h3>
{variant === "detailed" && (
<>
<p>{user.email}</p>
<p>Role: {user.role}</p>
</>
)}
{onEdit && <button onClick={() => onEdit(user.id)}>Edit</button>}
</div>
);
}
L’exemple ci-dessus définit un composant fortement dactylographié à l’aide d’un UserCardProps
interface, donc les accessoires passaient à UserCard
sont validés au temps de compilation.
Crochets de type type
TypeScript améliore les crochets React en offrant une sécurité de type pour l’état, les effets et les crochets personnalisés:
function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T) => void] {
const [storedValue, setStoredValue] = useState<T>(() => {
try {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
} catch (error) {
console.error(error);
return initialValue;
}
});
const setValue = (value: T) => {
try {
setStoredValue(value);
window.localStorage.setItem(key, JSON.stringify(value));
} catch (error) {
console.error(error);
}
};
return [storedValue, setValue];
}
function UserPreferences() {
const [preferences, setPreferences] = useLocalStorage<UserPrefs>('userPrefs', {
theme: 'light',
notifications: true,
fontSize: 'medium'
});
return (
<div>
<h2>User Preferences</h2>
<label>
Theme:
<select
value={preferences.theme}
onChange={(e) => setPreferences({
...preferences,
theme: e.target.value as 'light' | 'dark'
})}
>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label>
{}
</div>
);
}
Le crochet personnalisé useLocalStorage
usages génériques (c’est-à-dire des variables de type) pour fournir un accès et des mises à jour de type de type aux valeurs de stockage locales pour une utilisation cohérente entre les composants.
Composants génériques
Les génériques de typeScript permettent la création de composants hautement réutilisables qui maintiennent la sécurité du type:
interface SelectProps<T> {
items: T[];
selectedItem: T | null;
onSelect: (item: T) => void;
getDisplayText: (item: T) => string;
getItemKey: (item: T) => string | number;
}
function Select<T>({
items,
selectedItem,
onSelect,
getDisplayText,
getItemKey
}: SelectProps<T>) {
return (
<div className="select-container">
<div className="selected-item">
{selectedItem ? getDisplayText(selectedItem) : 'Select an item'}
</div>
<ul className="items-list">
{items.map(item => (
<li
key={getItemKey(item)}
className={item === selectedItem ? 'selected' : ''}
onClick={() => onSelect(item)}
>
{getDisplayText(item)}
</li>
))}
</ul>
</div>
);
}
interface User {
id: number;
name: string;
email: string;
}
function UserSelector() {
const [selectedUser, setSelectedUser] = useState<User | null>(null);
const users: User[] = [
{ id: 1, name: 'John Doe', email: 'john@example.com' },
{ id: 2, name: 'Jane Smith', email: 'jane@example.com' }
];
return (
<Select<User>
items={users}
selectedItem={selectedUser}
onSelect={setSelectedUser}
getDisplayText={(user) => user.name}
getItemKey={(user) => user.id}
/>
);
}
Le générique Select
Le composant ci-dessus s’adapte à tout type de données à l’aide de TypeScript Generics, permettant de réutiliser tout en préservant un typage strict pour les accessoires comme le texte d’affichage et les touches.
Envisagez de monter vos compétences en dactylographie?
Explorer Master TypeScript: Avantages et meilleures pratiques pour une fondation d’introduction et plonger dans Comment comprendre facilement les génériques dactylographiés Pour mieux comprendre les génériques et ce qu’ils offrent.
React 19 et mises à jour de l’écosystème
Nouveaux crochets
React 19 a présenté plusieurs nouveaux crochets, qui incluent useActionState, Usefortus, useoptimiste Et le nouveau Utiliser l’API. Ces crochets fournissent des solutions élégantes pour les tâches quotidiennes comme la manipulation de formulaires et les mises à jour optimistes de l’interface utilisateur. Voici un exemple du useOptimistic
Crochet en action:
function MessageList({ messages, onSendMessage }) {
const [optimisticMessages, addOptimisticMessage] = useOptimistic(
messages,
(state, newMessage) => [...state, newMessage]
);
const handleSubmit = async (formData) => {
const content = formData.get("message");
const optimisticMessage = {
id: `temp-${Date.now()}`,
content,
status: "sending",
};
addOptimisticMessage(optimisticMessage);
await onSendMessage(content);
};
return (
<form action={handleSubmit}>
<input name="message" />
<button type="submit">Send</button>
<div className="messages">
{optimisticMessages.map((message) => (
<div key={message.id} className={`message ${message.status || ""}`}>
{message.content}
</div>
))}
</div>
</form>
);
}
Dans l’exemple ci-dessus, le useOptimistic
Hook affiche immédiatement un nouveau message dans l’interface utilisateur avant La demande de réseau termine, offrant une expérience utilisateur plus fluide et plus rapide grâce à des mises à jour optimistes.
React Server Composants
React Server Composants représentent un changement de paradigme important dans la façon dont les applications réagites sont structurées et rendues. Ils permettent aux composants d’exécuter exclusivement sur le serveur, accédant directement aux sources de données sans appels API côté client et réduisant les tailles de faisceaux JavaScript.
La distinction clé entre les composants du serveur et du client réside dans l’endroit où ils s’exécutent et quelles capacités ils ont:
Composants du serveur:
- Exécutez sur le serveur avant d’envoyer HTML au client
- Peut accéder directement aux ressources du serveur (bases de données, système de fichiers)
- Impossible d’utiliser les API du navigateur côté client ou les crochets d’état React
- N’augmentez pas la taille du bundle javascript
- Automatiquement marqué en composants de serveur par défaut dans les frameworks comme Next.js
Composants du client:
- Exécuter dans le navigateur
- Peut utiliser des fonctionnalités interactives (état, effets, gestionnaires d’événements)
- Doit être explicitement marqué du
"use client"
directif - Contribuer à la taille du bundle javascript
Voici un exemple simple de la façon dont un composant de serveur et un composant client fonctionnent ensemble:
async function ProductPage({ productId }) {
const product = await db.products.findById(productId);
return (
<div className="product-page">
<h1>{product.name}</h1>
<p className="description">{product.description}</p>
<p className="price">${product.price.toFixed(2)}</p>
{}
<AddToCartButton productId={product.id} />
</div>
);
}
("use client");
function AddToCartButton({ productId }) {
const [isAdding, setIsAdding] = useState(false);
async function handleAddToCart() {
setIsAdding(true);
await addToCart(productId);
setIsAdding(false);
}
return (
<button onClick={handleAddToCart} disabled={isAdding}>
{isAdding ? "Adding..." : "Add to Cart"}
</button>
);
}
Le ProductPage
ci-dessus est un composant de serveur qui récupère les données du produit directement à partir de la base de données et rend le HTML statique, tandis que le AddToCartButton
est un composant client qui gère le comportement interactif comme la gestion de l’état du bouton et la réponse aux clics de l’utilisateur dans le navigateur. Ensemble, ils séparent les données de l’obtention de l’interactivité qui peuvent optimiser les performances et l’expérience utilisateur.
💡Vant un aperçu plus complet de ce qui est nouveau dans React 19?
Consultez notre article précédent, Quoi de neuf dans React 19pour un regard détaillé sur les derniers crochets, leuse()
API, composants du serveur et autres mises à jour clés introduites dans la dernière version React.
Frameworks
L’écosystème de la réact moderne a évolué considérablement, les cadres jouant un rôle essentiel dans l’élévation de l’expérience des développeurs et les performances des applications. En 2025, trois solutions se distinguent souvent dans le paysage de développement de React: Next.js, Remix et Vite.
Next.js Offre une solution complète pour le bâtiment des applications React. Il offre une flexible Rendre des stratégiesPrise en charge intégrée pour les routes API et les capacités complètes. Des fonctionnalités telles que l’optimisation automatique de l’image et la régénération statique incrémentale contribuent aux performances et à l’évolutivité des applications complexes.
Remix met l’accent sur les fondamentaux Web et l’amélioration progressive. C’est système de routage combine le chargement des données et le rendu de l’interface utilisateur via des itinéraires imbriqués. Il utilise fortement les fonctionnalités natives du navigateur et les conventions HTTP et fournit des transitions en douceur grâce à une prise en charge intégrée pour les états de chargement et des modèles d’interface utilisateur optimistes.
Vite Peut être utilisé comme un outil de construction autonome ou comme un complément puissant des frameworks comme Remix. Il transforme le flux de travail de développement avec des temps de démarrage presque instantanés et rapide Remplacement du module chaud. En tirant parti des modules ES natifs pendant le développement, VITE élimine le besoin de regroupement dans le cycle de développement, permettant aux serveurs de commencer en millisecondes plutôt qu’en minutes. Que ce soit utilisé indépendamment ou à côté d’un cadre, Vite offre une expérience de développement rapide et moderne sans compromettre les performances.
Bibliothèques de composants et systèmes de conception
La montée en puissance du CSS d’abord utilitaire avec le vent arrière
CSS du vent arrière est devenu un choix populaire pour le style dans les applications REACT, changeant fondamentalement la façon dont les développeurs abordent la conception des composants. Ce framework CSS d’abord utilitaire fournit des classes de services publics de bas niveau qui peuvent être composées directement dans le balisage JSX, éliminant le besoin de fichiers CSS séparés et réduisant le changement de contexte pendant le développement.
function ProductCard({ product }) {
return (
<div className="bg-white rounded-lg shadow-md overflow-hidden duration-300">
<img
src={product.imageUrl}
alt={product.name}
className="w-full h-48 object-cover"
/>
<div className="p-4">
<h3 className="text-lg font-semibold text-gray-800 mb-2">
{product.name}
</h3>
<p className="text-gray-600 text-sm mb-4">{product.description}</p>
<div className="flex justify-between items-center text-indigo-600">
<span className="font-bold">${product.price.toFixed(2)}</span>
<button className="bg-indigo-600 hover:bg-indigo-700 text-white rounded-md">
Add to Cart
</button>
</div>
</div>
</div>
);
}
Remarquez dans l’exemple ci-dessus, tout le style est géré en ligne en utilisant Cours d’utilité de Tailwind. Cela permet aux développeurs de construire rapidement des composants visuellement cohérents sans écrire CSS personnalisé.
En 2025, le vent arrière a continué d’évoluer avec des outils améliorés, de meilleures intégrations IDE et un écosystème élargi de plugins et de composants, cimentant sa position d’approche de style populaire pour de nombreux développeurs React.
Bibliothèques de composants d’interface utilisateur professionnels: Kendoreact
Alors que les cadres CSS d’abord de l’utilitaire comme Tailwind Excel dans la construction d’interfaces personnalisées, les applications d’entreprise peuvent parfois nécessiter des composants complexes avec des comportements sophistiqués et des caractéristiques d’accessibilité. C’est là que les bibliothèques d’interface utilisateur professionnelles aiment le progrès Kendoreact briller.
Kendoreact propose une suite complète de composants d’interface utilisateur pour les applications React, couvrant tout, des éléments essentiels comme Boutons et Dialogue aux composants avancés et hautement spécialisés comme Graphiques et Grilles de données.
En 2025, Kendoreact a continué d’évoluer avec des mises à jour régulières, élargissant ses offres de composants tout en maintenant une compatibilité arrière. Les développeurs qui cherchent à commencer peuvent désormais profiter de Kendoreact gratuit. Cette version de bibliothèque disponible gratuitement comprend plus de 50 composants personnalisables de qualité d’entreprise, ce qui facilite la création d’UIS de haute qualité sans coût initial.
💡 Curieux de savoir comment le vent arrière peut être utilisé en conjonction avec Kendoreact?
Vérifier Mode non style CSS et Kendoreact Pour apprendre à appliquer des cours de services publics aux composants de KendoreAct.Pour une perspective plus large sur l’endroit où le vent arrière brille (et où il ne peut pas) explorer Une introduction sur le vent arrière CSS: avant, inconvénients et cas d’utilisation du monde réel.
Conclure
Cet article explore certains des principaux modèles de réact, outils et mises à jour des écosystèmes façonnant le développement en 2025, à partir de composants de fonction et de crochets personnalisés à l’intégration de typeScript, aux nouvelles fonctionnalités React 19 et à des frameworks et bibliothèques modernes. Bien que l’article ne couvre pas tout, il met en évidence les modèles pratiques et approche que les développeurs utilisent aujourd’hui pour créer des applications évolutives, maintenables et performantes.
Pour plus de détails sur l’un des sujets abordés, assurez-vous de référencer les articles liés dans les sections respectives ci-dessus. Et si vous êtes prêt à démarrer avec Kendoreact gratuit:
Source link