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

448
Views
Si actualizo la página matchMedia no funciona

Estoy usando matchMedia en React para colapsar mi barra lateral cuando la página cambia de tamaño. Pero el problema es que si actualizo la página, mi barra lateral está abierta, no cerrada. Entonces, si quiero colapsar mi barra lateral, necesito cambiar el tamaño de la página nuevamente o usar el botón de cerrar.

 const layout = document.getElementById('home-layout'); const query = window.matchMedia('(max-width: 765px)'); query.onchange = (evt) => { if( query.matches ) { changeMenuMinified(true); layout.classList.add('extended-layout'); } else { changeMenuMinified(false); layout.classList.remove('extended-layout'); } }; query.onchange(); }; useEffect(() => { window.addEventListener('resize', handleResize); });

Si elimino addEventListener, funciona, puedo volver a cargar la página y mi barra lateral permanece cerrada, pero si trato de abrir la barra lateral con un botón, la barra lateral se cierra rápidamente.

 const handleResize = () => { const layout = document.getElementById('home-layout'); const query = window.matchMedia('(max-width: 765px)'); query.onchange = (evt) => { if( query.matches ) { changeMenuMinified(true); layout.classList.add('extended-layout'); } else { changeMenuMinified(false); layout.classList.remove('extended-layout'); } }; query.onchange(); }; useEffect(() => { handleResize() });

barra lateral

about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

Algunas cosas a considerar aquí:

  • Inicialice su estado con el valor coincidente actual
  • Eliminar el oyente en la función de limpieza de efectos
  • No olvide la matriz de dependencia useEffect para evitar que su código se ejecute en cada renderizado.

Puede encontrar un ejemplo de trabajo aquí -> https://codesandbox.io/s/stack-72619755-lpwh6m?file=/src/index.js:0-613

 const query = window.matchMedia('(max-width: 765px)') const App = () => { const [minified, changeMenuMinified] = useState(query.matches) useEffect(() => { const resizeHandler = () => { if (query.matches) { changeMenuMinified(true) } else { changeMenuMinified(false) } } query.addEventListener("change", resizeHandler); return () => query.removeEventListener("change", resizeHandler); }) return <p>{minified ? 'minified' : 'expanded'}</p> }

about 4 years ago · Santiago Gelvez 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!