← Wszystkie zadaniaReact · Middle

Hook usePrevious

Napisz hook usePrevious(value), który zwraca wartość value z poprzedniego renderu. Przy pierwszym renderze poprzedniej wartości jeszcze nie ma - zwróć undefined.

Taki hook pomaga porównać props ze starą wartością, na przykład żeby animować zmianę liczby.

Testy (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');