← Alle AufgabenReact · Middle

Hook usePrevious

Schreib einen Hook usePrevious(value), der den value aus dem vorherigen Render liefert. Beim ersten Render gibt es noch keinen vorherigen Wert, liefere also undefined.

Dieser Hook hilft, eine Prop mit ihrem alten Wert zu vergleichen, etwa um eine sich ändernde Zahl zu animieren.

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