Custom hooks

Vad är en custom hook?

  • En funktion som använder React hooks

Exempel, användningsområden

  • Hämta data från ett API
    • useFetch
  • Hämta data från localStorage
    • useLocalStorage
  • Hantera formulär
    • useForm
  • Hantera cookies
    • useCookies

En första custom hook

// implementation av useCounter
const { count, increment, decrement } = useCounter(0);

Hook under the hood

  • En hook är en funktion som tar emot ett argument och returnera ett värde
  • Inargumentet är oftast ett initialvärde
  • Returvärde är ett objekt med värden och funktioner (som ofta destruktureras)
import { useState } from 'react';

export const useCounter = (initialValue: number) => {
  const [count, setCount] = useState(initialValue);

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);

  return { count, increment, decrement };
};

Använda en custom hook

import { useCounter } from './useCounter';

const Counter = () => {
  const { count, increment, decrement } = useCounter(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
    </div>
  );
};

Demo - bygga en egen useReducer