← Wszystkie zadaniaReact · Junior

Hook useToggle

Napisz hook useToggle(initial = false). Zwraca tablicę [value, toggle]: bieżącą wartość logiczną i funkcję, która ją przełącza.

Funkcja toggle musi być ta sama między renderami, żeby można ją było bez strat przekazywać do komponentów memoizowanych i zależności efektów.

Testy (4)

  1. const { result } = renderHook(() => useToggle());
    expect(result.current[0]).toBe(false);
  2. const { result } = renderHook(() => useToggle(true));
    expect(result.current[0]).toBe(true);
  3. const { result } = renderHook(() => useToggle());
    act(() => result.current[1]());
    expect(result.current[0]).toBe(true);
    act(() => result.current[1]());
    expect(result.current[0]).toBe(false);
  4. const { result } = renderHook(() => useToggle());
    const first = result.current[1];
    act(() => result.current[1]());
    expect(result.current[1]).toBe(first);