Creación de Botones Reactivos con Styled Components en React
Clase 10 de 24 • Curso de React.js
Contenido del curso
Clase 10 de 24 • Curso de React.js
Contenido del curso
Jhon Eduard Bocanegra Ortiz
Miguel Angel Buelvas Gallo
Platzi Team
Daniel Cueto
Joel Dominguez Merino
Alejandro Jimenez
Guillermo Jimenez
Fernando Labastida Vázquez
Jesus Morales
Jheison Quiroga
Aloy Foxy
David Fernando Díaz Álvarez
Platzi
Angel David Contreras Barrios
Sebastián Andrés Sanhueza Tapia
Edwin Einsen Vásquez Velásquez
Santiago Martinez Zavala
Yan Harold Muñoz Dominguez
Nathali Anzola
Juan Carlos Ramirez Ustarroz
Juan Miguel Garcia Moreno
Emanuel Mendoza
Esaú Maximino
Daniel Alberto Vega Bejarano
Omar Abarca Arriaga
Christian Camilo Guantiva Figueroa
Alvaro H. Ruiz V.
valentina toledo
Hola amigos, a dia de hoy no es recomendable utilizar este tipo de librerías de estilos, ya que styled-component entro en modo mantenimiento, recomiendo personalmente usar tailwindcss para los estilos.
Noticia:
Excelente recomendación amigo
Por los que veo los styles components no se pueden utilizar a gran escala y lo veo bastante situacional, a diferencia de usar tailwind por ejemplo
Exactamente, no me parece muy escalable esta forma
Styled componentes es muy bueno y realmente si es escalable ya que permite crear los estilos de cada componente sin que choquen con otros componentes. Todo esta en el mismo archivo del componente por si necesitas cambiar o revisar algo del componente en particular. Ahora bien, no solo permite crear estilos de un solo componente y que este sea rígido en los estilos, permite crear variaciones del mismo componente, tomando de ejemplo el botón, podemos crear variaciones de un botón simple o un botón con icono por ejemplo.
Simplemente hay que estudiar mas a fondo Styled Components para ver su potencial en un proyecto.
Leo muchos comentarios diciendo que ya no se usan los styled components.
Si empiezas un proyecto de React de cero, hay mejores alternativas.
Pero si entras a un proyecto que ya tenga algunos años usando react, es muy probable que tengas que usar styled components.
Hace dos meses (junio 2025) me encontré con un proyecto de react que todavía usan React con class components.
Como sea, dense la oportunidad de aprender :D
Soporto este comentario, es parte del proceso de aprendizaje entender y ver tecnologias que probablemente ya no son el standard pero lo fueron en su momento.
Qué manera de complicarse, en qué mundo es conveniente usar esa cosa?
Lo mismo me pregunto yo, compañero :)
Pienso lo mismo, no se porque explican una práctica que hoy en dia no es muy recomendable utilizar. "Desde enero de 2024, styled‑components está en modo de mantenimiento, sin nuevas funcionalidades y con un desarrollo enfocado solo en bugs críticos" (medium)
Hola chicos, actualmente no es ideal idea usar Styled Components porque recientemente en 2025 anunciaron que pondrán el proyecto en "modo mantenimiento" por diversos motivos como la caída de uso de la librería, alternativas en tendencia como Tailwind y por funciones importantes dadas por deprecadas en React que resultaban importantes para la librería.
Anuncio:
Aquí les dejo algunas alternativas a Styled Componentes que pueden probar en sus proyectos
Emotion:
Vanilla Extract:
Panda CSS:
Y el favorito de muchos (el mío 💜)
Tailwind:
¿Como se haría esto usando Tailwind ya que Styled Components está en mantenimiento?
Se usaría el framework Tailwind CSS para estilizar directamente en las clases HTML, revisando su documentación para aplicar las clases necesarias como color, tamaño, grosor y otros estilos. No se requiere Styled Components.
Me hago la misma pregunta? ya que hice todo paso a paso como la profe y no renderiza nada en el navegador.
¿Cuál es la ventaja de usar Styled Components?, solamente hacer una condicional, al añadir la librería pesa 29,5 kb, en cambio hacer una ternaria debe pesar mucho menos ¿o no?
Que Styled Components entre en "modo mantenimiento" no significa que el proyecto esté "muerto" o sea inseguro usar, solo que su evolución se ha detenido. Es una fase natural en el ciclo de vida del software open source.
Además se lo van a encontrar en un montón de proyectos ya realizados, no crean que cuando trabajan todo lo hacen desde cero, la mayoría se basa en darle soporte y mantenimiento a proyectos ya existentes.
Styled Components es una buena librería, simplemente a muchos les gustan las cosas dadas, como Tailwind que ya solo es invocar "N" clases para los estilos. Aprendan a aprender y abrir su mente para ser mejores.
Mi aporte cambiando algunas cosas para que el componente reciba directamente como prop el color
Creación del componente
import styled from 'styled-components' const StyledButton = styled.button` background-color: ${(props) => props.color}; ` const Button = ({children, color}) => { return <StyledButton color={color}>{children}</StyledButton> } export default Button
Llamada al componente
<Button color={'blue'}>Hola</Button>
Así va quedando la CARD
Me verás en cada clase con mi aporte
interface ButtonProps { children: React.ReactNode; color?: string; onClick?: () => void; } const Button: React.FC<ButtonProps> = ({ children, color = 'white', onClick }) => { return <StyledButton color={color} onClick={onClick}>{children}</StyledButton>; }; ``` En caso de hacerlo con tsx, seria algo asi
el gran problema de tailwind
Se supone que "deberia ser mas optimo" hacer este componente... pero se ve muy conplicado una y otra vez....
En CSS, simplemente le pones una CLASS con los elementos que necesitas y listo.
Aún es recomendable usar sass? Tengo entendido que muchas de las ventajas que ofrecia hoy css ya las trae nativamente
Para que un componente React renderice diferentes elementos HTML según el contenido que reciba, puedes utilizar el concepto de props. Al pasar diferentes props al componente, puedes condicionar su renderizado usando estructuras de control como if o ternarios. Por ejemplo, puedes crear un componente que verifique el valor de una prop y decida qué elemento HTML mostrar. Esto se puede hacer de manera sencilla con un operador ternario o un switch dentro del método de renderizado. Así logras una mayor flexibilidad en el contenido del componente.
Interesante conocer diferentes formas de estilar nuestros CSS, yo utilizo los más modernos como Tailwind que está en auge en el mercado hoy en día.
No se si solo me pasa a mi por algo que hice mal, pero la propiedad bluelo marcaba como WARNING en el log de consolar:
Received true for a non-boolean attribute blue. If you want to write it to the DOM, pass a string instead: blue="true" or blue={value.toString()}.
Pero encontré que añadiendo $ en props.$blue en vez de solo props.blue, y en <StyledButton $blue={blue}... en vez de StyledButton blue={blue}... Soluciona el mensaje.
Aunque funciona sin esto, mandaba mensaje de aviso ya que a react no le gusta que se le envie atributos HTML no standard al DOM. Y usando $ hace que React ignore la propiedad al momento de renderizar el DOM. Esto solo debe ser usado cuando se crean custom props para styled components segun entiendo. O usar filter props para no requerir el $.
Nuuuuu... Que lindo mi .css con BEM, VSC y la extension 'CSS Peek' ❤ pero supongo que me puedo conseguir esto en la vida profesional.
Hola a todos!, tengo una duda. Al crear el 'Children' dentro del botón... ¿Se puede manipular que la creación del HTML del texto? Ejemplo un 'span' en vez de un 'p' como en el ejemplo de la clase.