{"id":5980,"date":"2024-10-08T09:24:37","date_gmt":"2024-10-08T09:24:37","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/qu-est-ce-que-styled-components-utiliser-react\/"},"modified":"2024-10-08T09:24:42","modified_gmt":"2024-10-08T09:24:42","slug":"qu-est-ce-que-styled-components-utiliser-react","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/qu-est-ce-que-styled-components-utiliser-react\/","title":{"rendered":"7.8 Qu&rsquo;est-ce que Styled Components et l&rsquo;Utiliser avec React"},"content":{"rendered":"\u00ab\u00a0`html\n<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Styled Components React &#8211; Introduction et Utilisation<\/title>\n<\/head>\n<body>\n\n<p><strong>Styled Components React<\/strong> est un outil puissant pour le stylisme dynamique des composants dans React. Il permet d&rsquo;\u00e9crire du CSS directement dans vos composants JavaScript, apportant flexibilit\u00e9s et maintenabilit\u00e9 accrues \u00e0 vos projets. Dans cet article, nous allons explorer ce qu&rsquo;est Styled Components et comment l&rsquo;utiliser efficacement dans une application React.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 <strong>Styled Components avec React<\/strong><\/h2>\n\n\n\n<div id=\"videoContainer\" style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;\">\n    <iframe src=\"https:\/\/player.vimeo.com\/video\/706091710?dnt=1&#038;fullscreen=0&#038;pip=0\" loading=\"lazy\" loading=\"lazy\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen id=\"vimeoPlayer\"><\/iframe>\n    \n    <!-- Popup Desktop -->\n    <div id=\"popupContainer\" class=\"desktop-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 400px; padding: 20px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n      <h2 style=\"color: #333; font-size: 1.5em; margin: 10px 0;\" id=\"profitez-de-loffre-spciale-\">Profitez de l\u2019offre sp\u00e9ciale !<\/h2>\n      <p style=\"color: #e74c3c; font-size: 1.2em; margin: 10px 0;\">Obtenez notre cours pour seulement <strong id=\"price\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n      <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/cr%C3%A9er-des-sites-interactifs-avec-react-et-redux\/143\" target=\"_blank\" style=\"display: block; padding: 10px 20px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 1em; margin: 20px auto;\" rel=\"noopener\">Commencer maintenant<\/a>\n      <button onclick=\"closePopup()\" style=\"padding: 10px 20px; font-size: 1em;\">Fermer<\/button>\n    <\/div>\n  \n    <!-- Popup Mobile -->\n    <div id=\"popupContainerMobile\" class=\"mobile-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; max-width: 300px; padding: 15px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n      <p style=\"color: #e74c3c; font-size: 1em; margin: 5px 0;\">Cours sp\u00e9cial \u00e0 <strong id=\"priceMobile\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n      <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/cr%C3%A9er-des-sites-interactifs-avec-react-et-redux\/143\" target=\"_blank\" style=\"display: inline-block; padding: 8px 15px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 0.9em;\" rel=\"noopener\">Commencer maintenant<\/a>\n      <button onclick=\"closePopup()\" style=\"padding: 5px 10px; font-size: 0.9em;\">Fermer<\/button>\n    <\/div>\n<\/div>\n\n<script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    var iframe = document.getElementById('vimeoPlayer');\n    var player = new Vimeo.Player(iframe);\n    var isPopupDisplayed = false;\n\n    player.on('play', function() {\n        if (!isPopupDisplayed) {\n            player.on('timeupdate', function(data) {\n                if (data.seconds >= 120 && !isPopupDisplayed) { \/\/ 120 seconds = 2 minutes\n                    \/\/ Pause the video and display the popup\n                    player.pause().then(function() {\n                        if (window.innerWidth > 768) {\n                            document.querySelector('.desktop-popup').style.display = 'block';\n                        } else {\n                            document.querySelector('.mobile-popup').style.display = 'block';\n                        }\n                        fetchPriceAndUpdatePopup();\n                        isPopupDisplayed = true;\n                    });\n                }\n            });\n        }\n    });\n\n    function fetchPriceAndUpdatePopup() {\n        fetch('https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144')\n            .then(response => response.text())\n            .then(html => {\n                var parser = new DOMParser();\n                var fetchedDoc = parser.parseFromString(html, 'text\/html');\n                var priceElement = fetchedDoc.querySelector('.ammount .fw-500');\n                var originalPriceElement = fetchedDoc.querySelector('.ammount del');\n                var price = priceElement ? priceElement.textContent.trim() : '29.5\u20ac';\n                var originalPrice = originalPriceElement ? originalPriceElement.textContent.trim() : '59\u20ac';\n\n                document.getElementById('price').textContent = price;\n                document.getElementById('priceMobile').textContent = price;\n                document.querySelector('.desktop-popup del').textContent = originalPrice;\n                document.querySelector('.mobile-popup del').textContent = originalPrice;\n            })\n            .catch(error => console.error('Error fetching the price:', error));\n    }\n\n    function closePopup() {\n        document.querySelector('.desktop-popup').style.display = 'none';\n        document.querySelector('.mobile-popup').style.display = 'none';\n        player.play(); \/\/ Allows resuming the video only after closing the popup\n    }\n});\n<\/script>\n\n\n\n<p><strong>Styled Components<\/strong> est une librairie qui utilise les <em>Tagged Template Literals<\/em> g\u00e9n\u00e9riques de JavaScript pour vous permettre d&rsquo;\u00e9crire du CSS dans vos fichiers JavaScript. Cela s&rsquo;av\u00e8re \u00eatre particuli\u00e8rement utile dans les projets React pour associer des styles directement \u00e0 des composants. Pour en savoir plus sur React et ses extensions, vous pouvez consulter <a href=\"https:\/\/wikiform.fr\/codespace\/extensions-indispensables-developper-react\">cet article sur les extensions indispensables pour d\u00e9velopper avec React<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation et Configuration de Styled Components<\/h3>\n\n\n\n<p>Pour commencer \u00e0 utiliser <strong>Styled Components<\/strong> dans votre projet React, vous devez d&rsquo;abord l&rsquo;installer. Utilisez la commande suivante pour l&rsquo;ajouter \u00e0 votre projet :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-shell\"><code>npm install styled-components<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9ation d&rsquo;un Composant Styl\u00e9<\/h3>\n\n\n\n<p>Apr\u00e8s avoir install\u00e9 Styled Components, vous pouvez commencer \u00e0 cr\u00e9er vos composants stylis\u00e9s. Voici un simple exemple d&rsquo;utilisation :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-js\"><code>import styled from 'styled-components';\n\nconst Button = styled.button`\n  background-color: #3498db;\n  color: white;\n  padding: 10px;\n  border-radius: 5px;\n  border: none;\n  cursor: pointer;\n\n  &:hover {\n    background-color: #2980b9;\n  }\n`;\n\nexport default Button;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Int\u00e9gration dans un Composant React<\/h3>\n\n\n\n<p>Int\u00e9grer votre composant styl\u00e9 dans un composant React est simple. Voici comment vous pouvez inclure votre bouton styl\u00e9 dans un composant React :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-js\"><code>import React from 'react';\nimport Button from '.\/Button';\n\nfunction App() {\n  return (\n    <div>\n      <h1>Bienvenue sur notre site !<\/h1>\n      <Button>Cliquez ici<\/Button>\n    <\/div>\n  );\n}\n\nexport default App;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Styles Dynamiques avec Styled Components<\/h3>\n\n\n\n<p>Une des puissantes fonctionnalit\u00e9s de Styled Components est la possibilit\u00e9 de faire des styles dynamiques qui changent selon les propri\u00e9t\u00e9s pass\u00e9es. Voici comment vous pouvez impl\u00e9menter un style dynamique :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-js\"><code>const DynamicButton = styled.button`\n  background-color: ${props => props.primary ? '#3498db' : '#2ecc71'};\n  color: white;\n  padding: 10px;\n  border-radius: 5px;\n  border: none;\n  cursor: pointer;\n\n  &:hover {\n    background-color: ${props => props.primary ? '#2980b9' : '#27ae60'};\n  }\n`;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Styled Components React &#8211; Conclusion<\/h2>\n\n\n\n<p><strong>Styled Components<\/strong> offre une mani\u00e8re \u00e9l\u00e9gante et efficace de g\u00e9rer les styles dans vos applications React. En int\u00e9grant le CSS directement dans vos composants, cette m\u00e9thode favorise une meilleure organisation et r\u00e9utilisabilit\u00e9 du code. Essayez ce puissant outil dans vos projets pour lever vos interactions avec les utilisateurs \u00e0 un niveau sup\u00e9rieur. Pour en explorer davantage, consultez la <a href=\"https:\/\/styled-components.com\/\" target=\"_blank\" rel=\"noopener\">documentation officielle de Styled Components<\/a>. Vous pouvez \u00e9galement d\u00e9couvrir comment <a href=\"https:\/\/wikiform.fr\/codespace\/utiliser-javascript-dans-jsx-react\">utiliser JavaScript dans JSX avec React<\/a>, ce qui peut \u00e9tendre encore plus vos capacit\u00e9s de d\u00e9veloppement.<\/p>\n\n\n<!-- Promotion Learnify -->\n<a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/cr%C3%A9er-des-sites-interactifs-avec-react-et-redux\/143\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" src=\"https:\/\/wikiform.fr\/codespace\/wp-content\/uploads\/2024\/07\/learnify-formation-REDUX-ET-REACT-offre-50.gif\" loading=\"lazy\" alt=\"Formation React et Redux\" style=\"width: 100%; max-width: 600px; height: auto;\" title=\"\">\n<\/a>\n\u00ab\u00a0`","protected":false},"excerpt":{"rendered":"<p>\u00ab\u00a0`html Styled Components React &#8211; Introduction et Utilisation Styled Components React est un outil puissant pour le stylisme dynamique des composants dans React. Il permet&#8230;<\/p>\n","protected":false},"author":2,"featured_media":3260,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[18],"class_list":["post-5980","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-react-et-redux","tag-tutoriels"],"acf":[],"_titre_de_la_formation":null,"_description_":null,"_objectifs_pedagogiques":null,"_programme_":null,"_url_de_limage":null,"_materiel_necessaire":null,"_modalites_devaluation_des_acquis":null,"_moyens_pedagogiques_et_techniques":null,"_accessibilite_":null,"_formateur_":null,"menu_order":0,"_links":{"self":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/comments?post=5980"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5980\/revisions"}],"predecessor-version":[{"id":5981,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5980\/revisions\/5981"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/3260"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}