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

160
Vistas
el script montado no se carga en vuejs

Tengo un script que alterna el componente de modo oscuro que he agregado a mi archivo index.html en mi carpeta pública. Decidí moverlo a mi vista y renderizar montado. Sin embargo, no estoy seguro de si lo estoy haciendo correctamente, ya que no cambia al modo oscuro una vez que se activa.

Aquí está el script inicial que agregué a index.html en la carpeta pública:

 const checkbox = document.querySelector('#checkbox'); const html = document.querySelector('html'); const toggleDarkMode = function () { checkbox.checked ? html.classList.add('dark') : html.classList.remove('dark'); } toggleDarkMode(); checkbox.addEventListener('click', toggleDarkMode);

Aquí lo muevo a mi vista y lo cargo una vez montado:

 <script> import Darkmode from '../components/Darkmode.vue'; import Footer from '../components/Footer.vue'; export default { name: 'About', components: { Darkmode, Footer, }, mounted() { const checkbox = document.querySelector('#checkbox'); const html = document.querySelector('html'); const toggleDarkMode = () => ( checkbox.checked ? html.classList.add('dark') : html.classList.remove('dark') ); toggleDarkMode(); }, }; </script>

Solo como referencia, aquí está el componente DarkMode.vue que cambia el modo:

 <template> <div class="rounded-lg flex bg-gray-600 items-center justify-center mx-auto absolute top-1 right-0 left-3/3 mt-2 mr-2 z-50"> <span class="text-md font-extralight"> <i class="fas fa-sun"></i> </span> <div> <input class="hidden" id="checkbox" name="" type="checkbox"/> <label class="cursor-pointer" for="checkbox"> <div class="w-9 h-5 flex items-center bg-gray-300 rounded-full p2"> <div class="w-4 h-4 bg-white rounded-full shadow switch-ball"></div> </div> </label> </div> <span class="text-xs font-semibold"> <i class="fas fa-moon"></i> </span> </div> </template> <script> export default { name: 'Darkmode', props: { msg: String, }, }; </script>

¿Me estoy perdiendo algo o esto se supone que funciona?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si, según tengo entendido, tiene la intención de activar el modo oscuro al activar su casilla de verificación, no tiene mucho sentido que coloque su lógica en un evento de ciclo de vida como montado. Puedes intentar usar v-model y ver:

 <template> <div class="rounded-lg flex bg-gray-600 items-center justify-center mx-auto absolute top-1 right-0 left-3/3 mt-2 mr-2 z-50"> <span class="text-md font-extralight"> <i class="fas fa-sun"></i> </span> <div> <input v-model="checkboxOn" class="hidden" id="checkbox" name="" type="checkbox"/> <label class="cursor-pointer" for="checkbox"> <div class="w-9 h-5 flex items-center bg-gray-300 rounded-full p2"> <div class="w-4 h-4 bg-white rounded-full shadow switch-ball"></div> </div> </label> </div> <span class="text-xs font-semibold"> <i class="fas fa-moon"></i> </span> </div> </template> <script> import Darkmode from '../components/Darkmode.vue'; import Footer from '../components/Footer.vue'; export default { name: 'About', components: { Darkmode, Footer, }, data: () => ({ checkboxOn: 0, }), watch:{ toggleDarkMode(){ // This isn't a 'vue-style' procedure. I think you should try to communicate with your darkmode.vue component using Vuex, event bus, props... this.checkboxOn ? document.querySelector('html').classList.add('dark') : document.querySelector('html').classList.remove('dark') } } }; </script>
about 4 years ago · Juan Pablo Isaza 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