Hookpedia
Ctrl + K
Repositório no GitHub

useTimeAgo

Compartilhar no Twitter

29 de março de 2022

Recebe uma data e retorna uma string de quanto tempo passou desde então e gerencia sua atualização.

import { formatDistance } from "date-fns";
import ptBR from "date-fns/locale/pt-BR";
import { useEffect, useState } from "react";

export function useTimeAgo(compareDate) {
	const [timeAgo, setTimeAgo] = useState(() => {
		return getTimeAgoFromNow(compareDate);
	});
	
	function getTimeAgoFromNow(date) {
		return formatDistance(date, new Date(), {
			locale: ptBR,
			addSuffix: true
		});
	}

	useEffect(() => {
		function refreshTimeAgo() {
			setTimeAgo(getTimeAgoFromNow(compareDate));
		}
		
		window.addEventListener("focus", refreshTimeAgo);
		
		return () => {
			window.removeEventListener("focus", refreshTimeAgo);
		};
	}, [compareDate]);

	return timeAgo;
}

Criado por @guilherssousa, mantido por 1 pessoas 💗