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

314
Visualizações
¿Cómo se obtiene una transición gradual al usar React useState hook para cambiar de clase en lugar de CSS className:hover?

Estoy tratando de obtener una transición gradual para un div llamado "taskIcons". Contiene una serie de íconos y me gustaría desvanecerse lentamente desde la derecha cuando entro con el mouse sobre mi div de título.

En lugar de usar el CSS incorporado: desplácese y vincúlelo al nombre de clase "título de la tarea". He usado el gancho React useState para cambiar el nombre de clase de mi elemento HTML. Aquí hay una copia de fragmentos del código:

JSX:

 const [hover, setHover] = useState(false) function handleHover() { setHover(!hover) console.log(hover) } return ( <div className='task-item' > <div className='task-header'> <h3 className='task-element task-title' onMouseEnter={handleHover} onMouseLeave={handleHover} >{title}</h3> <div className='fade-out'></div> <div name="taskIcons" className={hover ? 'task-icons ' : ' invisible-icons'}> <FaSun className='task-icon' onClick={moveTomorrow} /> {/* Placeholder for "Move to tomorrow" icon */} <FaCalendar className='task-delete task-icon' onClick={toggleCalendar}/> <FaEdit className='task-edit task-icon' onClick={editTask} /> {/* Edit Task */} <FaTimes className='task-delete task-icon' onClick={deleteTask} /> {/* Delete */} </div> </div> <div className='task-body'> <p className='task-element'>{parseBody()}</p> {buckets.map((bucket, index) => ( <span className='task-bucket task-element'key={index}>#{bucket}</span> ))} </div> <span> {dueDate} </span> {calendar ? <Schedule/> : null} </div> )

CSS:

 margin: 0px 0px 0px 10px; align-self: flex-start; text-align: left; } .task-header{ display: flex; flex-direction: row; } .task-title{ margin-right: auto; overflow-x: hidden; cursor: pointer; } .task-body { display: flex; flex-direction: column; } .invisible-icons { display: none; } .task-icons { display: flex; white-space: nowrap; margin-top: 4px; transition: 1s; } .task-icon { margin-left: 4px; margin-right: 4px; }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

intenta así

 <h3 className={`task-element ${hover ? 'some-class' : 'task-title'}`} onMouseEnter={handleHover} onMouseLeave={handleHover} >{title}</h3>
también puede usar la biblioteca https://www.npmjs.com/package/clsx

es más fácil con la biblioteca, solo puedes hacer

 <h3 className={clsx('task-element', hover ? 'some-class' : 'task-title')} onMouseEnter={handleHover} onMouseLeave={handleHover} >{title}</h3>

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