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

223
Visualizações
¿Cómo agregar diferentes componentes de reacción a una lista con solo hacer clic en un botón?

Tengo dos tipos de componentes, quiero que aparezcan en la pantalla al hacer clic en un botón, pero no es como mostrar y ocultar componentes, es más como generar un tema muchas veces. como si hago clic en el botón, puedo agregar más y más, así que si hago clic en el primer botón genera el componente 1 y cuando hago clic en el segundo botón agrega el segundo componente a la lista, etc.

No tengo idea de cómo lograr esto, pensé en almacenar los componentes en un estado y hacer un bucle de mapa, pero no estoy seguro de si esto es posible (almacenar los componentes en el estado) y si es una buena práctica.

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

0

Creo que tuve una situación similar al hacer un sitio web de resolución de matemáticas en el que quería mostrar la solución (Elemento JSX) cuando el usuario hace clic en el botón "resolver". No sé si esta es la mejor práctica, pero acabo de crear un SolutionObject con la siguiente interfaz mecanografiada:

 interface SolutionObject { isSolved: boolean; solutionElement: JSX.Element; }

Luego inicialicé el objeto de la solución usando el gancho useState() :

 const [Solution, solved] = useState<SolutionObject>();

Luego lo usé en mi componente React así

 <div className="solution"> {Solution?.solutionElement} </div> {Solution?.isSolved ? <button onClick={closeBtn}>Close</button> : null}

Para actualizar la solución, acabo de actualizar el objeto de la solución con el JSX en la propiedad solutionElement en una función de resolución con el JSX correcto para la solución paso a paso. Aquí hay un ejemplo:

 solved({ isSolved: true, solutionElement: // prettier-ignore <div className="card"> <h2>Using Distance Formula</h2> <p> <Latex>{`$Distance\\ (D) = \\sqrt{(x_{2}-x_{1})^2 + (y_{2}-y_{1})^2}$`}</Latex> <br /><br /> <Latex>{`$D = \\sqrt{(${X2}-${X1})^2 + (${Y2}-${Y1})^2}$`}</Latex> <br /><br /> <Latex>{`$D = \\sqrt{(${X2 - X1})^2 + (${Y2 - Y1})^2}$`}</Latex> <br /><br /> <Latex>{`$D = \\sqrt{${(X2 - X1) ** 2} + ${(Y2 - Y1) ** 2}}$`}</Latex> <br /><br /> <Latex>{`$D = \\sqrt{${(X2 - X1) ** 2 + (Y2 - Y1) ** 2}}$`}</Latex> <br /><br /> <Latex>{`$D = ${formatSquareRoot((X2 - X1) ** 2 + (Y2 - Y1) ** 2).outer}\\sqrt{${formatSquareRoot((X2 - X1) ** 2 + (Y2 - Y1) ** 2).inner}}$`}</Latex> </p> </div>, });

No sé si esto es exactamente lo que está buscando, pero su pregunta suena similar. Supongo que puede usar esta idea para almacenar elementos JSX en un estado y representarlos en su componente. Si tiene una lista de elementos JSX, puede usar el tipo JSX.Element[] para ellos (si usa mecanografiado) y mapearlos

 {items && items.map((Item, i) => ( <div key={i}> <Item /> </div> ))}

Nuevamente, no tengo mucha experiencia con esto y no sé si es la mejor práctica, pero seguro que funciona.

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