Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

148
Visualizações
alternar estilos de múltiples botones al hacer clic en reaccionar

hola a todos Estoy construyendo mi primera tienda de comercio electrónico y me encontré con un problema, mi sitio vende zapatos. ingrese la descripción de la imagen aquí

pero cuando hago clic en el botón, quiero poder cambiar el color del botón seleccionado. Solo debería poder seleccionar un botón, ya que no puede tener dos tamaños por zapato.

aquí está el componente que contiene la tarjeta de zapatos:

 import React from "react"; const ShoeProductCard = ({ productData }) => { const sizes = [7, 8, 9, 10]; return productData.map((product) => { return ( <div key={product.id} className="productsGrid"> <div key={product.id} className="container"> <div key={product.id} style={{ backgroundColor: product.color }} className="card" > <div key={product.id} className="imgBx"> <img key={product.id} src={product.img} alt="shoes" /> </div> <div className="contentBx"> <h2>{product.title}</h2> <div className="size"> <h3>Size :</h3> {sizes.map((size) => ( <span key={size} >{size}</span> ))} </div> <a href="#" alt="logo"> {" "} <i className="fa-solid fa-cart-arrow-down"></i> </a> <br /> <span className="price">Price: {product.price}</span> <br /> <i style={{ color: "white", cursor: "pointer" }} className="fa-solid fa-circle-info" ></i> </div> </div> </div> </div> ); }); }; export default ShoeProductCard;

ahora lo que intenté fue darle a mis estilos un estado de verdadero y falso y leerlo condicionalmente con mi clase en el componente en línea. pero eso no funcionó, simplemente borró toda la página.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Así es como lo haría. Tenga una variable de estado que almacene el tamaño de zapato seleccionado, que cambia cuando se hace clic en un botón de nuevo tamaño.

 import React, { useState } from "react"; const ShoeProductCard = () => { const sizes = [7, 8, 9, 10]; const [selectedSize, setSelectedSize] = useState(""); // dummy data let productData = [{ id: 1, img: "imgSrc", title: "Yeezy 350s", price: 780 }]; return productData.map((product) => { return ( <div key={product.id} className="productsGrid"> <div key={product.id} className="container"> <div key={product.id} style={{ backgroundColor: product.color }} className="card" > <div key={product.id} className="imgBx"> <img key={product.id} src={product.img} alt="shoes" /> </div> <div className="contentBx"> <h2>{product.title}</h2> <div className="size"> <h3>Size :</h3> {sizes.map((size) => ( <button onClick={() => setSelectedSize(size)} style={{ backgroundColor: selectedSize === size ? "grey" : "white", }} key={size} > {size} </button> ))} </div> <a href="#" alt="logo"> {" "} <i className="fa-solid fa-cart-arrow-down"></i> </a> <br /> <span className="price">Price: {product.price}</span> <br /> <i style={{ color: "white", cursor: "pointer" }} className="fa-solid fa-circle-info" ></i> </div> </div> </div> </div> ); }); }; export default ShoeProductCard;

Básicamente, cambié sus intervalos a botones que se asignan desde la matriz de tamaños.

 backgroundColor: selectedSize === size ? "grey" : "white",

Esto aquí solo cambia el color de los botones, si se ha seleccionado el tamaño, es gris, si no, es blanco. Solo cambia en consecuencia. Es posible que deba configurar sus botones para que se muestren: bloquear para darles el estilo que desee.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda