Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

380
Vistas
¿Cómo se desplaza en ReactJS? - onMouseLeave no registrado durante el desplazamiento rápido

¿Cómo puede lograr un evento de desplazamiento o un evento activo en ReactJS cuando realiza un estilo en línea?

Descubrí que el enfoque onMouseEnter, onMouseLeave tiene errores, por lo que espero que haya otra forma de hacerlo.

Específicamente, si pasa el mouse sobre un componente muy rápidamente, solo se registra el evento onMouseEnter. onMouseLeave nunca se activa y, por lo tanto, no puede actualizar el estado... dejando que el componente parezca como si todavía estuviera sobrevolado. He notado lo mismo si intenta imitar la pseudoclase css ": active". Si hace clic muy rápido, solo se registrará el evento onMouseDown. El evento onMouseUp será ignorado... dejando el componente activo.

Aquí hay un JSFiddle que muestra el problema: https://jsfiddle.net/y9swecyu/5/

Video de JSFiddle con problema: https://vid.me/ZJEO

El código:

 var Hover = React.createClass({ getInitialState: function() { return { hover: false }; }, onMouseEnterHandler: function() { this.setState({ hover: true }); console.log('enter'); }, onMouseLeaveHandler: function() { this.setState({ hover: false }); console.log('leave'); }, render: function() { var inner = normal; if(this.state.hover) { inner = hover; } return ( <div style={outer}> <div style={inner} onMouseEnter={this.onMouseEnterHandler} onMouseLeave={this.onMouseLeaveHandler} > {this.props.children} </div> </div> ); } }); var outer = { height: '120px', width: '200px', margin: '100px', backgroundColor: 'green', cursor: 'pointer', position: 'relative' } var normal = { position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, backgroundColor: 'red', opacity: 0 } var hover = { position: 'absolute', top: 0, bottom: 0, left: 0, right: 0, backgroundColor: 'red', opacity: 1 } React.render( <Hover></Hover>, document.getElementById('container') )
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

¿Has probado alguno de estos?

onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp

Evento Sintético

también menciona lo siguiente:

React normaliza los eventos para que tengan propiedades consistentes en diferentes navegadores.

Los controladores de eventos a continuación son activados por un evento en la fase burbujeante. Para registrar un controlador de eventos para la fase de captura, agregue Capture al nombre del evento; por ejemplo, en lugar de usar onClick, usaría onClickCapture para manejar el evento de clic en la fase de captura.

over 4 years ago · Santiago Trujillo Denunciar

0

Las respuestas anteriores son bastante confusas. No necesita un estado de reacción para resolver esto, ni ninguna biblioteca externa especial. Se puede lograr con puro css/sass:

El estilo:

 .hover { position: relative; &:hover &__no-hover { opacity: 0; } &:hover &__hover { opacity: 1; } &__hover { position: absolute; top: 0; opacity: 0; } &__no-hover { opacity: 1; } }

El componente de reacción

Una simple función de renderizado puro Hover :

 const Hover = ({ onHover, children }) => ( <div className="hover"> <div className="hover__no-hover">{children}</div> <div className="hover__hover">{onHover}</div> </div> )

Uso

Entonces úsalo así:

 <Hover onHover={<div> Show this on hover </div>}> <div> Show on no hover </div> </Hover>
over 4 years ago · Santiago Trujillo Denunciar

0

puede usar onMouseOver={this.onToggleOpen} y onMouseOut={this.onToggleOpen} para reflexionar sobre el componente

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda