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

204
Visualizações
¿Cómo cambiar css en reaccionar en este ejemplo?

Estoy tratando de mover la pelota al punto donde hace clic el mouse. La función registra X e Y pero no mueve la bola. ¿Que me estoy perdiendo aqui?

Componente de reacción mecanografiado

 const PlayArea = () => { let top = 'inherit'; let left = 'inherit'; document.addEventListener("click", function(e){ console.log((e.clientX + 25) + 'px') top = (e.clientY - 25) + "px"; console.log(top) left = e.clientX - 25 + "px"; }); return ( <> <div className="ball" style={{ transform: `top ${top}, left ${left}` }}></div> </> ); }; export default PlayArea;

CSS

 .ball { height: 100px; width: 100px; border-radius: 50%; background-color: #0b8027; position:absolute; }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Configure sus variables top e left para indicar objetos y actualícelos en su devolución de llamada de evento de clic.

 const [mouse, setMouse] = useState({}) useEffect(() => { const event = (e) => { setMouse({ top: `${e.clientY - 25}px`, left: `${e.clientX - 25}px` } document.addEventListener("click", event); }); return () => document.removeEventListener("click", event) }, []) return ( <> <div className="ball" style={{ top: mouse?.top, left: mouse?.left }}></div> </> );

No necesita transform sus propiedades de estilo top e left . Los configura directamente, y la position de los elementos le permitirá moverse a la ubicación que le dé.

También sería mejor agregar su detector de eventos en el montaje del componente y eliminarlo cuando el componente se desmonte con useEffect y la función de limpieza.

about 4 years ago · Juan Pablo Isaza Relatório

0

Para volver a renderizar el componente, debe utilizar el estado. Declare su variable superior e izquierda en el estado como se muestra a continuación y agregue el oyente enent una vez que su componente esté montado.

 import { useEffect, useState } from 'react'; const PlayArea = () => { const [state, setState] = useState({ left: 'inherit', top: 'inherit', }); useEffect(() => { document.addEventListener('click', (e) => { setState({ left: `${e.clientX - 25}px`, top: `${e.clientY - 25}px` }); }); }, []); return ( <> <div className="ball" style={{ transform: `top ${state.top}, left ${state.left}` }} /> </> ); }; export default PlayArea;

A medida que agrega su detector de eventos al objeto del documento, necesita tener la position: fixed a menos que tenga una clase relativa para el div que ha creado.

 .ball { height: 100px; width: 100px; border-radius: 50%; background-color: #0b8027; position:fixed; }
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