hola desarrolladores, estoy tratando de guardar mi modo oscuro en el almacenamiento local, pero no puedo. Lo he estado intentando durante horas y no veo la documentación que me funciona. Estoy usando svelte, no sveltekit. Lo siento por mi inglés. no soy nativo y lo siento por mi pregunta soy nuevo en desarrollo y en stackoverflow
// This is my store but not work the localStorage import {writable} from 'svelte/store'; const storedTheme = localStorage.getItem("darkmode"); export let darkmode=writable(storedTheme); darkmode.subscribe(value => { localStorage.setItem("darkmode", value===false ? false : true); }); // and in my switch archieve i got this <script> import {darkmode} from '../store/Store'; const handleClick=()=>{ darkmode.update(darkmode=>!darkmode); }; </script>localStorage.setItem convierte el valor en una cadena antes de almacenarlo. Si hace localStorage.getItem('darkmode') en la consola JS, es probable que obtenga "true" o "false" en lugar de true o false .
Es difícil saber si esto es lo que está causando su problema sin ver cómo está usando el valor del darkmode en su vista. Si lo está tratando como un booleano, esperaría que siempre esté en modo oscuro, ya que las cadenas "true" y "false" se convierten al valor booleano true .
Si esto es lo que sucede, la forma más fácil de solucionarlo sería con algo como esto:
const storedTheme = localStorage.getItem("darkmode") === "true"; De manera más general, si desea almacenar valores que no sean cadenas en localStorage, entonces puede considerar serializarlos/deserializarlos usando JSON.stringify / JSON.parse . Esto manejará su caso booleano aquí, así como cosas más complicadas como un objeto.