Para que tus hábitos no se pierdan al cerrar la app, aquí verás cómo integrar persistencia con Async Storage, ordenar tus types, crear utils de fecha en date.ts y montar una arquitectura con context y reducer para hidratar, agregar y hacer toggle de hábitos con control de racha. Todo claro, modular y listo para escalar.
¿Cómo instalar y preparar Async Storage?
Antes de guardar datos localmente, instala la librería Async Storage. Asegúrate de crear una Storage Key clara y una versión para futuras migraciones.
Instala la librería según el recurso compartido.
Define una llave de almacenamiento: STORAGE_KEY = "Hábitos".
Define una versión: STORAGE_VERSION = 1.
Usa la llave para leer, escribir y actualizar datos.
Mantén el state inicial con: habits vacíos y loading: true.
Separa tus modelos y tipos en una carpeta llamada types. Así el código en TSX/JSX queda limpio y escalable.
Crea la carpeta: types.
Define la prioridad con tres valores conocidos del proyecto.
Define el hábito con campos mínimos y fechas para la racha.
Incluye identificador único para cada hábito.
Código orientativo:
// types/habits.tsexporttypePriority=string;// tres tipos ya definidos en el proyecto.exportinterfaceHabit{ id:string; title:string; priority:Priority; streak:number;// racha. createdAtISO:string;// fecha de creación en ISO. lastDoneISO?:string;// última vez completado en ISO.}
¿Cómo diseñar context y reducer para hábitos?
Crea una carpeta para tus contexts. Ahí vivirá la “central de mando” con state, acciones y reducer para hidratar, agregar y hacer toggle. Controla loading, mapea hábitos y actualiza la racha con fechas.
Estado inicial: loading: true, habits: [].
Acciones con payload tipado: hydrate, add, toggle.
Usa un switch por action.type.
En hydrate: loading = false y hábitos desde el payload.
En add: crea id único con la fecha y guarda en ISO.
En toggle: valida si ya se hizo hoy, calcula racha con “ayer”, y actualiza fechas.