useToday
La date du jour, qui change à minuit et au retour de l’onglet, sans désaccord d’hydratation.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-today.jsonAjoute le hook et tout ce dont il dépend à votre projet.
Copiez et collez le code suivant dans votre projet.
hooks/use-today.ts Mettez à jour les chemins d’import selon la configuration de votre projet.
Utilisez-le dès qu'un composant dépend de la date courante, par exemple pour mettre en évidence aujourd'hui, désactiver les jours passés ou décompter jusqu'à une échéance.
Lire la date pendant le rendu pose deux problèmes :
- Désaccords d'hydratation. Le serveur rend dans son fuseau horaire, parfois avec des heures d'écart. Près de minuit, le serveur et le navigateur ne s'accordent pas sur le jour, et React jette le HTML du serveur.
- Dates périmées. Un onglet laissé ouvert toute la nuit continue d'afficher hier comme aujourd'hui jusqu'à ce que quelque chose d'autre le re-rende.
useToday renvoie undefined côté serveur et pendant l'hydratation, puis la date locale. Il re-rend aussi à minuit et quand l'onglet redevient visible, car les minuteurs des onglets en arrière-plan peuvent être suspendus et manquer minuit.
Bornes de dates
Désactive les jours passés et tout ce qui est à plus de 30 jours. Tant qu'aujourd'hui n'est pas connu, rien n'est désactivé, pour que le HTML du serveur corresponde au premier rendu client.
Le fichier exporte aussi les éléments dont le hook est construit. Les clés de date sont des chaînes locales YYYY-MM-DD. Elles se comparent par jour, se trient correctement et s'utilisent sans risque comme keys React ou clés de cache. subscribeToday vous rappelle à minuit et au retour sur l'onglet, en dehors de React.
- Le
Daterenvoyé est minuit en heure locale : le comparer avec<ou>compare donc des jours, pas des heures. - Le même objet
Dateest renvoyé jusqu'au changement de jour, il peut donc servir sans risque dans les dépendances d'effets. - Prévoyez le rendu
undefined. Un skeleton, ou un rendu sans limites liées à la date, conviennent tous deux.
| Valeur de retour | Description |
|---|---|
Date | undefined | Minuit local aujourd'hui. undefined côté serveur et pendant l'hydratation. |
| Export | Description |
|---|---|
toDateKey(date) | Un Date sous forme de chaîne YYYY-MM-DD locale. |
fromDateKey(key) | Une chaîne YYYY-MM-DD sous forme de Date à minuit local. |
getTodayKey() | La clé de date d'aujourd'hui. |
subscribeToday(callback) | Rappelle à minuit et quand l'onglet redevient visible. Renvoie une fonction de désabonnement. |
Calendar, et Date picker par son intermédiaire.