useToday
A data de hoje, que se atualiza à meia-noite e quando a aba volta, sem divergência de hidratação.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-today.jsonAdiciona o hook e tudo de que ele depende ao seu projeto.
Copie e cole o código a seguir no seu projeto.
hooks/use-today.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Recorra a ele sempre que um componente depender da data atual, como destacar hoje, desabilitar dias passados ou fazer contagem regressiva até um prazo.
Ler a data durante a renderização quebra de duas formas:
- Divergências de hidratação. O servidor renderiza no seu fuso horário, possivelmente horas antes. Perto da meia-noite, servidor e navegador discordam sobre o dia, e o React descarta o HTML do servidor.
- Datas desatualizadas. Uma aba deixada aberta durante a noite continua mostrando ontem como hoje até que algo a renderize de novo.
useToday retorna undefined no servidor e durante a hidratação, e depois a data local. Também renderiza de novo à meia-noite e quando a aba volta a ficar visível, porque os temporizadores em abas em segundo plano podem ser pausados e perder a meia-noite.
Limites de data
Desabilite dias passados e qualquer coisa a mais de 30 dias. Até hoje ser conhecido, nada é desabilitado, para o HTML do servidor coincidir com a primeira renderização do cliente.
O arquivo também exporta as peças com que o hook é construído. As chaves de data são strings locais YYYY-MM-DD. Elas comparam por dia, ordenam corretamente e são seguras como keys do React ou chaves de cache. subscribeToday chama você de volta à meia-noite e na volta à aba, fora do React.
- A
Dateretornada é a meia-noite no horário local, então compará-la com<ou>compara dias, não horários. - O mesmo objeto
Datevolta até o dia mudar, então é seguro usá-lo em dependências de effect. - Planeje a renderização com
undefined. Um skeleton, ou renderizar sem limites baseados em data, ambos funcionam.
| Retorna | Descrição |
|---|---|
Date | undefined | Meia-noite local de hoje. undefined no servidor e durante a hidratação. |
| Exportação | Descrição |
|---|---|
toDateKey(date) | Uma Date como string local YYYY-MM-DD. |
fromDateKey(key) | Uma string YYYY-MM-DD como uma Date na meia-noite local. |
getTodayKey() | A chave de data de hoje. |
subscribeToday(callback) | Chama de volta à meia-noite e quando a aba fica visível. Retorna uma função para cancelar a assinatura. |
Calendar, e Date picker por meio dele.