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

139
Visualizações
¿Cómo alternar solo un elemento de una colección de elementos al hacer clic en ReactJS?

Quiero alternar solo el último elemento de intervalo que dice "texto para alternar para {user.id}", solo quiero alternar este elemento para ese elemento li específico, no para todos los elementos li. Actualmente, como lo he configurado, alternará ese elemento de intervalo para todos los elementos li debido a cómo funciona el estado. Estaba pensando en pasar un índice a través de la función de mapa y hacer referencia al índice para alternar el elemento que quiero, pero ¿cómo puedo hacer eso? Debido a que el estado se establece para todos los elementos li, ¿hay una mejor manera de hacer esto en lugar de usar el estado?

Sé que con Vanilla JS podría usar getElementById y configurar el estilo para ocultar o bloquear. Pero con reaccionar no estaba seguro de la mejor manera de manejar esto, porque me enseñaron que queremos evitar las identificaciones cuando podemos reaccionar. Luego, en lo que respecta al uso de useRef(), no estaba seguro de que realmente funcionara aquí porque necesitaría crear referencias para cada elemento y no sé si puedo hacerlo dinámicamente o si esa sería la mejor práctica. ¿para esa materia?

¡Gracias!

 import React, { useState } from 'react'; const Users = [ { id: 1, name: 'Andy', age: 32 }, { id: 2, name: 'Bob', age: 30 }, { id: 3, name: 'Tom Hulk', age: 40 }, { id: 4, name: 'Tom Hank', age: 50 }, { id: 5, name: 'Audra', age: 30 }, { id: 6, name: 'Anna', age: 68 }, { id: 7, name: 'Tom', age: 34 }, { id: 8, name: 'Tom Riddle', age: 28 }, { id: 9, name: 'Bolo', age: 23 }, ]; function Test() { const [toggle, setToggle] = useState('none'); function toggleFunction () { toggle === 'none' ? setToggle('block') : setToggle('none') } return ( <div className="container"> <div className="user-list"> { Users.map((user) => ( <li key={user.id} className="user"> <button onClick={toggleFunction}>Button</button> <span className="user-id">{user.id}</span> <span className="user-name">{user.name}</span> <span className="user-age">{user.age} year old</span> <span style={{display: toggle}}>text to toggle for {user.id}</span> </li> )) } </div> </div> ); } export default Test;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Desea realizar un seguimiento del estado de alternancia para cada elemento.

 export default function App() { const [toggle, setToggle] = React.useState({}); function toggleFunction(id) { setToggle({ ...toggle, [id]: !toggle[id], }); } return ( <div className="container"> <div className="user-list"> {Users.map((user) => ( <li key={user.id} className="user"> <button onClick={() => toggleFunction(user.id)}>Button</button> <span className="user-id">{user.id}</span> <span className="user-name">{user.name}</span> <span className="user-age">{user.age} year old</span> <span style={{ display: toggle[user.id] ? 'block' : 'none' }}> text to toggle for {user.id} </span> </li> ))} </div> </div> ); }

toggle realiza un seguimiento de qué elementos se alternaron o no, asociando la id de un elemento con su estado de alternancia (usamos la notación de paréntesis para almacenar esta información), por ejemplo

 {8: true, 9: true}

Luego, en el renderizado, leemos el valor de alternancia de un elemento usando su id para verificar si se alteró o no usando toggle[user.id]

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