Maison interface Web js tutoriel Explorer les fonctionnalités de React, les dépréciations et les dernières modifications

Explorer les fonctionnalités de React, les dépréciations et les dernières modifications

Dec 10, 2024 pm 08:22 PM

Exploring React  Features, Deprecations, and Breaking Changes

React 19 est là, apportant une multitude de nouvelles fonctionnalités, d'améliorations et de changements importants. Cette version redéfinit la façon dont les développeurs gèrent la gestion de l'état, les formulaires et le rendu côté serveur tout en abandonnant les API existantes. Si vous envisagez une mise à niveau, attachez-vous pour un voyage transformateur. Ce guide vous guidera à travers les points forts de React 19, avec des conseils pour assurer une transition en douceur.


Points forts de React 19

Nouvelles fonctionnalités

1. Actions et useActionState

L'API startTransition prend désormais en charge les fonctions asynchrones, appelées « Actions ». Les actions peuvent gérer les mises à jour d'état, gérer les effets secondaires comme fetch() et inclure la gestion des erreurs. Ils rationalisent les transitions avec des mises à jour d'état coordonnées et un rendu de l'interface utilisateur.

Le nouveau hook useActionState complète cela en donnant accès aux états d'action, y compris les états en attente et finaux. Il accepte un réducteur pour le contrôle granulaire, ce qui en fait un outil essentiel pour les interactions de formulaires et les flux d'états complexes.

2. Mises à jour optimistes avec useOptimistic

useOptimistic permet aux développeurs de définir des changements d'état temporaires pendant qu'une transition est en cours, offrant ainsi une expérience utilisateur plus fluide. L'état revient ou se met à jour automatiquement une fois l'opération asynchrone terminée.

3. utiliser l'API

React 19 introduit l'use API, qui permet de lire des promesses ou des contextes pendant le rendu. Cela peut simplifier les flux de travail de récupération de données du serveur, mais s'accompagne de la restriction selon laquelle l'utilisation ne peut être appelée que dans une fonction de rendu.

4. réf comme accessoire

Vous pouvez désormais transmettre directement les références en tant qu'accessoires, éliminant ainsi le besoin de forwardRef. Ce changement simplifie la composition des composants et rend le travail avec les références plus intuitif.

5. Suspense amélioré

Suspense prend désormais en charge le préchauffage des frères et sœurs, qui valide les composants de secours immédiatement lorsqu'un frère ou une sœur est suspendu. Cette amélioration améliore les performances et l'expérience utilisateur dans les applications gourmandes en données.


Améliorations du client React DOM

1. Actions de formulaire

Les formulaires dans React sont plus intelligents avec

action props, permettant une meilleure intégration avec useFormStatus. La soumission d'un formulaire réinitialise automatiquement son état pour les composants non contrôlés.

2. Métadonnées du document et optimisation des ressources

React 19 prend en charge nativement le rendu des métadonnées des documents, telles que ou <méta> balises, dans l’arborescence des composants. De plus, de nouvelles API telles que preinit, preload et preconnect améliorent la découverte des ressources et les temps de chargement.</p> <h4> 3. <strong>Scripts asynchrones</strong> </h4> <p>Vous pouvez désormais afficher des scripts asynchrones n'importe où dans l'arborescence des composants. React gère le classement et la déduplication, rationalisant ainsi l'intégration de scripts tiers.</p> <hr> <h3> <strong>Réagir au serveur DOM</strong> </h3> <h4> 1. <strong>Nouvelles API de pré-rendu</strong> </h4> <p>Les API <strong>prerender</strong> et <strong>prerenderToNodeStream</strong> améliorent le rendu côté serveur (SSR) en prenant en charge les environnements de streaming comme Node.js. Ces API attendent le chargement des données avant de générer du HTML, ce qui rend SSR plus robuste.</p> <h4> 2. <strong>Composants stables du serveur React (RSC)</strong> </h4> <p>Les composants du serveur sont désormais stables, permettant aux bibliothèques de cibler React 19 en tant que dépendance homologue. Cela s'aligne sur l'architecture Full-stack React et permet une intégration transparente avec des frameworks comme Next.js.</p> <hr> <h3> <strong>Dépréciations et changements radicaux</strong> </h3> <h4> <strong>Dépréciations</strong> </h4> <ul> <li> <strong>accès element.ref</strong> : obsolète au profit de element.props.ref.</li> <li> <strong>react-test-renderer</strong> : enregistre les avertissements de dépréciation ; envisagez de migrer vers la bibliothèque de tests React.</li> <li> <strong>API héritées</strong> : les API telles que contextTypes, defaultProps pour les fonctions et les références de chaîne sont officiellement obsolètes.</li> </ul> <h4> <strong>Modifications révolutionnaires</strong> </h4> <ol> <li><p><strong>Exigence de transformation JSX</strong><br> La nouvelle transformation JSX est obligatoire dans React 19. Elle active des fonctionnalités telles que les références comme accessoires et améliore les performances globales.</p></li> <li><p><strong>Gestion des erreurs et modifications</strong><br> Les erreurs non détectées sont désormais signalées à window.reportError, tandis que les erreurs détectées par les limites sont enregistrées via console.error. De nouvelles méthodes comme onUncaughtError et onCaughtError permettent la personnalisation.</p></li> <li> <p><strong>API supprimées</strong></p> <ul> <li> <strong>ReactDOM.render et ReactDOM.hydrate</strong> : Remplacés par ReactDOM.createRoot et ReactDOM.hydrateRoot.</li> <li> <strong>defaultProps pour les fonctions</strong> : utilisez plutôt les paramètres par défaut d'ES6.</li> <li> <strong>Contexte hérité</strong> : utilisez l'API contextType moderne.</li> <li> <strong>react-dom/test-utils</strong> : remplacé par act du noyau React.</li> </ul> </li> <li><p><strong>Builds UMD supprimées</strong><br> Les versions UMD ne sont plus prises en charge. Utilisez des CDN basés sur ESM pour l'utilisation des balises de script, telles que esm.sh.</p></li> </ol> <hr> <h2> <strong>Préparation de la mise à niveau</strong> </h2> <h3> 1. <strong>Mettez à niveau vers React 18.3 en premier</strong> </h3> <p>React 18.3 introduit des avertissements de dépréciation pour les API supprimées dans React 19. Cette étape intermédiaire permet d'identifier les problèmes potentiels avant la mise à niveau complète.</p> <h3> 2. <strong>Codemods et outils de migration</strong> </h3> <p>Utilisez les codemods React pour automatiser les mises à jour répétitives, telles que la refactorisation des API obsolètes et l'ajustement des types TypeScript.</p> <h3> 3. <strong>Ajustements TypeScript</strong> </h3> <p>React 19 inclut des saisies TypeScript plus strictes. Par exemple :</p> <ul> <li> ReactChild → React.ReactElement | numéro | chaîne </li> <li> VoidFunctionComponent → FonctionComponent </li> </ul> <p>Refactorisez votre code pour l'aligner sur ces mises à jour.</p> <hr> <h2> <strong>Conseils pour une transition en douceur</strong> </h2> <ul> <li> <strong>Exploiter le mode strict</strong> : React 19 introduit une application plus stricte des meilleures pratiques. L'exécution de votre application en mode strict peut révéler des bugs cachés.</li> <li> <strong>Testez tôt et souvent</strong> : compte tenu des changements radicaux, des tests approfondis sont essentiels. La transition de React-test-renderer vers React Testing Library garantit la compatibilité avec le rendu simultané.</li> <li> <strong>Examinez le rendu du serveur</strong> : si votre application utilise SSR, testez les nouvelles API de pré-rendu de React 19 et assurez une intégration fluide des composants du serveur.</li> </ul> <hr> <h2> <strong>Pourquoi réagir 19 est important</strong> </h2> <p>React 19 constitue un pas en avant significatif, affinant l'expérience des développeurs tout en offrant des fonctionnalités puissantes pour les applications modernes. Que vous soyez enthousiasmé par les actions asynchrones, l'amélioration de Suspense ou les améliorations du rendu côté serveur, cette version regorge de fonctionnalités pour aider les développeurs à créer des applications plus rapides et plus résilientes.</p> <p>Prêt à plonger ? Commencez par le guide de mise à niveau de React 19 et explorez les notes de version complètes.</p> <p>Bon codage ! ?</p> <p>Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!</p> </div> </div> <div class="wzconShengming_sp"> <div class="bzsmdiv_sp">Déclaration de ce site Web</div> <div>Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn</div> </div> </div> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="2507867629"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div class="AI_ToolDetails_main4sR"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5902227090019525" data-ad-slot="3653428331" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <!-- <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Article chaud</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796789525.html" title="Quoi de neuf dans Windows 11 KB5054979 et comment résoudre les problèmes de mise à jour" class="phpgenera_Details_mainR4_bottom_title">Quoi de neuf dans Windows 11 KB5054979 et comment résoudre les problèmes de mise à jour</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796793874.html" title="Comment réparer KB5055523 ne parvient pas à s'installer dans Windows 11?" class="phpgenera_Details_mainR4_bottom_title">Comment réparer KB5055523 ne parvient pas à s'installer dans Windows 11?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796787760.html" title="Inzoi: Comment postuler à l'école et à l'université" class="phpgenera_Details_mainR4_bottom_title">Inzoi: Comment postuler à l'école et à l'université</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 Il y a quelques mois</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796793871.html" title="Comment réparer KB5055518 ne parvient pas à s'installer dans Windows 10?" class="phpgenera_Details_mainR4_bottom_title">Comment réparer KB5055518 ne parvient pas à s'installer dans Windows 10?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796788723.html" title="Où trouver la clé du bureau du site dans Atomfall" class="phpgenera_Details_mainR4_bottom_title">Où trouver la clé du bureau du site dans Atomfall</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/fr/article.html">Afficher plus</a> </div> </div> </div> --> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Outils d'IA chauds</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title"> <h3>Undresser.AI Undress</h3> </a> <p>Application basée sur l'IA pour créer des photos de nu réalistes</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title"> <h3>AI Clothes Remover</h3> </a> <p>Outil d'IA en ligne pour supprimer les vêtements des photos.</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title"> <h3>Undress AI Tool</h3> </a> <p>Images de déshabillage gratuites</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title"> <h3>Clothoff.io</h3> </a> <p>Dissolvant de vêtements AI</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title"> <h3>Video Face Swap</h3> </a> <p>Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/fr/ai">Afficher plus</a> </div> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Article chaud</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796789525.html" title="Quoi de neuf dans Windows 11 KB5054979 et comment résoudre les problèmes de mise à jour" class="phpgenera_Details_mainR4_bottom_title">Quoi de neuf dans Windows 11 KB5054979 et comment résoudre les problèmes de mise à jour</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796793874.html" title="Comment réparer KB5055523 ne parvient pas à s'installer dans Windows 11?" class="phpgenera_Details_mainR4_bottom_title">Comment réparer KB5055523 ne parvient pas à s'installer dans Windows 11?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796787760.html" title="Inzoi: Comment postuler à l'école et à l'université" class="phpgenera_Details_mainR4_bottom_title">Inzoi: Comment postuler à l'école et à l'université</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 Il y a quelques mois</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796793871.html" title="Comment réparer KB5055518 ne parvient pas à s'installer dans Windows 10?" class="phpgenera_Details_mainR4_bottom_title">Comment réparer KB5055518 ne parvient pas à s'installer dans Windows 10?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/1796788723.html" title="Où trouver la clé du bureau du site dans Atomfall" class="phpgenera_Details_mainR4_bottom_title">Où trouver la clé du bureau du site dans Atomfall</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>4 Il y a quelques semaines</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/fr/article.html">Afficher plus</a> </div> </div> </div> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Outils chauds</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/toolset/development-tools/92" title="Bloc-notes++7.3.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Bloc-notes++7.3.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/toolset/development-tools/92" title="Bloc-notes++7.3.1" class="phpmain_tab2_mids_title"> <h3>Bloc-notes++7.3.1</h3> </a> <p>Éditeur de code facile à utiliser et gratuit</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/toolset/development-tools/93" title="SublimeText3 version chinoise" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 version chinoise" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/toolset/development-tools/93" title="SublimeText3 version chinoise" class="phpmain_tab2_mids_title"> <h3>SublimeText3 version chinoise</h3> </a> <p>Version chinoise, très simple à utiliser</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/toolset/development-tools/121" title="Envoyer Studio 13.0.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Envoyer Studio 13.0.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/toolset/development-tools/121" title="Envoyer Studio 13.0.1" class="phpmain_tab2_mids_title"> <h3>Envoyer Studio 13.0.1</h3> </a> <p>Puissant environnement de développement intégré PHP</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title"> <h3>Dreamweaver CS6</h3> </a> <p>Outils de développement Web visuel</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/fr/toolset/development-tools/500" title="SublimeText3 version Mac" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 version Mac" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/fr/toolset/development-tools/500" title="SublimeText3 version Mac" class="phpmain_tab2_mids_title"> <h3>SublimeText3 version Mac</h3> </a> <p>Logiciel d'édition de code au niveau de Dieu (SublimeText3)</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/fr/ai">Afficher plus</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Sujets chauds</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/gmailyxdlrkzn" title="Où se trouve l'entrée de connexion pour la messagerie Gmail ?" class="phpgenera_Details_mainR4_bottom_title">Où se trouve l'entrée de connexion pour la messagerie Gmail ?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>7899</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>15</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/java-tutorial" title="Tutoriel Java" class="phpgenera_Details_mainR4_bottom_title">Tutoriel Java</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1651</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>14</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/cakephp-tutor" title="Tutoriel CakePHP" class="phpgenera_Details_mainR4_bottom_title">Tutoriel CakePHP</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1411</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>52</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/laravel-tutori" title="Tutoriel Laravel" class="phpgenera_Details_mainR4_bottom_title">Tutoriel Laravel</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1303</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>25</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/fr/faq/php-tutorial" title="Tutoriel PHP" class="phpgenera_Details_mainR4_bottom_title">Tutoriel PHP</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1248</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>29</span> </div> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/fr/faq/zt">Afficher plus</a> </div> </div> </div> </div> </div> <div class="Article_Details_main2"> <div class="phpgenera_Details_mainL4"> <div class="phpmain1_2_top"> <a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img src="/static/imghw/index2_title2.png" alt="" /></a> </div> <div class="phpgenera_Details_mainL4_info"> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796790201.html" title="Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174270062124226.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal?" /> </a> <a href="https://www.php.cn/fr/faq/1796790201.html" title="Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal?" class="phphistorical_Version2_mids_title">Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal?</a> <span class="Articlelist_txts_time">Apr 04, 2025 pm 02:42 PM</span> <p class="Articlelist_txts_p">Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796793115.html" title="Démystifier javascript: ce qu'il fait et pourquoi c'est important" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174412846042688.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Démystifier javascript: ce qu'il fait et pourquoi c'est important" /> </a> <a href="https://www.php.cn/fr/faq/1796793115.html" title="Démystifier javascript: ce qu'il fait et pourquoi c'est important" class="phphistorical_Version2_mids_title">Démystifier javascript: ce qu'il fait et pourquoi c'est important</a> <span class="Articlelist_txts_time">Apr 09, 2025 am 12:07 AM</span> <p class="Articlelist_txts_p">JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796789661.html" title="Qui est payé plus de python ou de javascript?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174369658137192.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Qui est payé plus de python ou de javascript?" /> </a> <a href="https://www.php.cn/fr/faq/1796789661.html" title="Qui est payé plus de python ou de javascript?" class="phphistorical_Version2_mids_title">Qui est payé plus de python ou de javascript?</a> <span class="Articlelist_txts_time">Apr 04, 2025 am 12:09 AM</span> <p class="Articlelist_txts_p">Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796790259.html" title="Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174261349469659.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido?" /> </a> <a href="https://www.php.cn/fr/faq/1796790259.html" title="Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido?" class="phphistorical_Version2_mids_title">Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido?</a> <span class="Articlelist_txts_time">Apr 04, 2025 pm 05:36 PM</span> <p class="Articlelist_txts_p">La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796788947.html" title="JavaScript est-il difficile à apprendre?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174361081173887.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JavaScript est-il difficile à apprendre?" /> </a> <a href="https://www.php.cn/fr/faq/1796788947.html" title="JavaScript est-il difficile à apprendre?" class="phphistorical_Version2_mids_title">JavaScript est-il difficile à apprendre?</a> <span class="Articlelist_txts_time">Apr 03, 2025 am 12:20 AM</span> <p class="Articlelist_txts_p">Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796793650.html" title="L'évolution de JavaScript: tendances actuelles et perspectives d'avenir" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174424878172869.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="L'évolution de JavaScript: tendances actuelles et perspectives d'avenir" /> </a> <a href="https://www.php.cn/fr/faq/1796793650.html" title="L'évolution de JavaScript: tendances actuelles et perspectives d'avenir" class="phphistorical_Version2_mids_title">L'évolution de JavaScript: tendances actuelles et perspectives d'avenir</a> <span class="Articlelist_txts_time">Apr 10, 2025 am 09:33 AM</span> <p class="Articlelist_txts_p">Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796790250.html" title="Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174261411019446.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript?" /> </a> <a href="https://www.php.cn/fr/faq/1796790250.html" title="Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript?" class="phphistorical_Version2_mids_title">Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript?</a> <span class="Articlelist_txts_time">Apr 04, 2025 pm 05:09 PM</span> <p class="Articlelist_txts_p">Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/fr/faq/1796790190.html" title="Zustand Asynchronous Operation: Comment assurer le dernier État obtenu par Usestore?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174277718392217.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Zustand Asynchronous Operation: Comment assurer le dernier État obtenu par Usestore?" /> </a> <a href="https://www.php.cn/fr/faq/1796790190.html" title="Zustand Asynchronous Operation: Comment assurer le dernier État obtenu par Usestore?" class="phphistorical_Version2_mids_title">Zustand Asynchronous Operation: Comment assurer le dernier État obtenu par Usestore?</a> <span class="Articlelist_txts_time">Apr 04, 2025 pm 02:09 PM</span> <p class="Articlelist_txts_p">Problèmes de mise à jour des données dans les opérations asynchrones de Zustand. Lorsque vous utilisez la bibliothèque de gestion de l'État de Zustand, vous rencontrez souvent le problème des mises à jour de données qui entraînent des opérations asynchrones prématurées. � ...</p> </div> </div> <a href="https://www.php.cn/fr/web-designer.html" class="phpgenera_Details_mainL4_botton"> <span>See all articles</span> <img src="/static/imghw/down_right.png" alt="" /> </a> </div> </div> </div> </main> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!</p> </div> <div class="footermid"> <a href="https://www.php.cn/fr/about/us.html">À propos de nous</a> <a href="https://www.php.cn/fr/about/disclaimer.html">Clause de non-responsabilité</a> <a href="https://www.php.cn/fr/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1746163790"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '9']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <script> // top layui.use(function () { var util = layui.util; util.fixbar({ on: { mouseenter: function (type) { layer.tips(type, this, { tips: 4, fixed: true, }); }, mouseleave: function (type) { layer.closeAll("tips"); }, }, }); }); document.addEventListener("DOMContentLoaded", (event) => { // 定义一个函数来处理滚动链接的点击事件 function setupScrollLink(scrollLinkId, targetElementId) { const scrollLink = document.getElementById(scrollLinkId); const targetElement = document.getElementById(targetElementId); if (scrollLink && targetElement) { scrollLink.addEventListener("click", (e) => { e.preventDefault(); // 阻止默认链接行为 targetElement.scrollIntoView({ behavior: "smooth" }); // 平滑滚动到目标元素 }); } else { console.warn( `Either scroll link with ID '${scrollLinkId}' or target element with ID '${targetElementId}' not found.` ); } } // 使用该函数设置多个滚动链接 setupScrollLink("Article_Details_main1L2s_1", "article_main_title1"); setupScrollLink("Article_Details_main1L2s_2", "article_main_title2"); setupScrollLink("Article_Details_main1L2s_3", "article_main_title3"); setupScrollLink("Article_Details_main1L2s_4", "article_main_title4"); setupScrollLink("Article_Details_main1L2s_5", "article_main_title5"); setupScrollLink("Article_Details_main1L2s_6", "article_main_title6"); // 可以继续添加更多的滚动链接设置 }); window.addEventListener("scroll", function () { var fixedElement = document.getElementById("Article_Details_main1Lmain"); var scrollTop = window.scrollY || document.documentElement.scrollTop; // 兼容不同浏览器 var clientHeight = window.innerHeight || document.documentElement.clientHeight; // 视口高度 var scrollHeight = document.documentElement.scrollHeight; // 页面总高度 // 计算距离底部的距离 var distanceToBottom = scrollHeight - scrollTop - clientHeight; // 当距离底部小于或等于300px时,取消固定定位 if (distanceToBottom <= 980) { fixedElement.classList.remove("Article_Details_main1Lmain"); fixedElement.classList.add("Article_Details_main1Lmain_relative"); } else { // 否则,保持固定定位 fixedElement.classList.remove("Article_Details_main1Lmain_relative"); fixedElement.classList.add("Article_Details_main1Lmain"); } }); </script> <script> document.addEventListener('DOMContentLoaded', function() { const mainNav = document.querySelector('.Article_Details_main1Lmain'); const header = document.querySelector('header'); if (mainNav) { window.addEventListener('scroll', function() { const scrollPosition = window.scrollY; if (scrollPosition > 84) { mainNav.classList.add('fixed'); } else { mainNav.classList.remove('fixed'); } }); } }); </script> </body> </html>