useToday
La fecha de hoy, que se actualiza a medianoche y cuando la pestaña vuelve a primer plano, sin discrepancia de hidratación.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-today.jsonAñade el hook y todo lo que necesita a tu proyecto.
Copia y pega el siguiente código en tu proyecto.
hooks/use-today.ts Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Recurre a él siempre que un componente dependa de la fecha actual, como resaltar hoy, deshabilitar días pasados o hacer una cuenta atrás hasta una fecha límite.
Leer la fecha durante el renderizado falla de dos maneras:
- Discrepancias de hidratación. El servidor renderiza en su zona horaria, posiblemente horas antes. Cerca de la medianoche, el servidor y el navegador no coinciden en el día, y React descarta el HTML del servidor.
- Fechas obsoletas. Una pestaña que se deja abierta toda la noche sigue mostrando ayer como hoy hasta que algo más la vuelve a renderizar.
useToday devuelve undefined en el servidor y durante la hidratación, y después la fecha local. También se vuelve a renderizar a medianoche y cuando la pestaña vuelve a ser visible, porque los temporizadores en pestañas en segundo plano pueden pausarse y perderse la medianoche.
Límites de fecha
Deshabilita los días pasados y todo lo que esté a más de 30 días. Hasta que se conozca hoy, no se deshabilita nada, para que el HTML del servidor coincida con el primer renderizado del cliente.
El archivo también exporta las piezas con las que está construido el hook. Las claves de fecha son cadenas locales YYYY-MM-DD. Se comparan por día, se ordenan correctamente y se pueden usar con seguridad como keys de React o claves de caché. subscribeToday te llama de vuelta a medianoche y al volver a la pestaña, fuera de React.
- El
Datedevuelto es la medianoche en hora local, así que compararlo con<o>compara días, no horas. - Se devuelve el mismo objeto
Datehasta que cambia el día, así que es seguro usarlo en dependencias de efectos. - Planifica el renderizado con
undefined. Sirven tanto un skeleton como renderizar sin límites basados en la fecha.
| Devuelve | Descripción |
|---|---|
Date | undefined | La medianoche local de hoy. undefined en el servidor y durante la hidratación. |
| Exportación | Descripción |
|---|---|
toDateKey(date) | Un Date como cadena local YYYY-MM-DD. |
fromDateKey(key) | Una cadena YYYY-MM-DD como Date en la medianoche local. |
getTodayKey() | La clave de fecha de hoy. |
subscribeToday(callback) | Llama de vuelta a medianoche y cuando la pestaña se hace visible. Devuelve una función para cancelar la suscripción. |
Calendar, y Date picker a través de él.