Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

236
Views
ClickAwayListener no funciona con las transiciones Collapse o Fade

Estoy tratando de crear un área de notificaciones. Muestro un ícono de notificación, y cuando el usuario hace clic en él, muestro la lista de notificaciones.

Aquí hay una caja de códigos

El problema es que no puedo mezclarlo con ClickAwayListener .

Cuando uso ClickAwayListener , no se muestra en absoluto.

¿Cómo debo arreglar esto?

HeaderAction.js

 import Tooltip from "@material-ui/core/Tooltip"; import Fade from "@material-ui/core/Fade"; import Collapse from "@material-ui/core/Collapse"; import React, { useState } from "react"; import ClickAwayListener from "@material-ui/core/ClickAwayListener"; import Icon from "@material-ui/core/Icon"; const HeaderAction = ({ icon, title, component }) => { const Component = component || (() => <div>NA</div>); const [showComponent, setShowComponent] = useState(false); const handleClick = () => { setShowComponent(!showComponent); }; return ( <> <Tooltip title={title || ""}> <div onClick={() => handleClick()}> <Icon>{icon}</Icon> </div> </Tooltip> {/* This part is not working */} {/* <ClickAwayListener onClickAway={() => setShowComponent(false)}> <div> <Fade in={showComponent}> <div> <Component /> </div> </Fade> </div> </ClickAwayListener> */} <Fade in={showComponent}> <div> <Component /> </div> </Fade> </> ); }; export { HeaderAction };
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Cuando hace clic en el botón del icono, se llama a handleClick y el estado de showComponent se establece en true , pero luego también se llama a onClickAway de ClickAwayListener y establece el estado de showComponent en false nuevamente. La solución es simple, no permita que el controlador onClickAway ejecute deteniendo la propagación después de hacer clic en el botón:

 <div onClick={(e) => { e.stopPropagation(); handleClick(); }} >

Demostración de Codesandbox

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!