← Усі задачіReact · Middle

Хук usePrevious

Напишіть хук usePrevious(value), який повертає значення value з попереднього рендеру. На першому рендері попереднього значення ще немає - поверніть undefined.

Такий хук допомагає порівняти пропс зі старим значенням, наприклад, щоб анімувати зміну числа.

Тести (3)

  1. const { result } = renderHook(({ v }) => usePrevious(v), { initialProps: { v: 1 } });
    expect(result.current).toBe(undefined);
  2. const { result, rerender } = renderHook(({ v }) => usePrevious(v), { initialProps: { v: 1 } });
    rerender({ v: 2 });
    expect(result.current).toBe(1);
  3. const { result, rerender } = renderHook(({ v }) => usePrevious(v), { initialProps: { v: 'a' } });
    rerender({ v: 'b' });
    rerender({ v: 'c' });
    expect(result.current).toBe('b');