React usePrevious Hook на TypeScript: предыдущее состояние без лишних зависим

Пошаговая реализация хука usePrevious в React на TypeScript: сохраняем предыдущее значение пропсов или стейта без дополнительных библиотек.


**Почему это полезно**

* Лёгковесно: всего 7 строк и никакого стороннего кода.

* Типобезопасно: полноценная поддержка TypeScript.

* Гибко: подходит для любых типов — стейт, пропсы, вычисляемые значения.
import { useRef, useEffect } from 'react';

function usePrevious<T>(value: T): T | undefined {
  const ref = useRef<T | undefined>(undefined);

  useEffect(() => {
    ref.current = value;
  }, [value]);

  return ref.current;
}

// Пример использования в компоненте
import React, { useState } from 'react';

const Counter: React.FC = () => {
  const [count, setCount] = useState<number>(0);
  const prevCount = usePrevious(count);

  return (
    <div>
      <p>Текущий счёт: {count}</p>
      <p>Предыдущий: {prevCount}</p>
      <button onClick={() => setCount(count + 1)}>Увеличить</button>
    </div>
  );
};

export default Counter;