Приведи пример кастомных Hook

Ответ

Кастомные хуки позволяют выносить логику из компонентов для повторного использования. Например, хук для управления формой:

import { useState } from 'react';

function useForm(initialValues) {
  const [values, setValues] = useState(initialValues);

  const handleChange = (e) => {
    const { name, value } = e.target;
    setValues({
      ...values,
      [name]: value
    });
  };

  return {
    values,
    handleChange,
    setValues
  };
}

// Использование в компоненте
function MyForm() {
  const { values, handleChange } = useForm({ email: '', password: '' });

  return (
    <form>
      <input 
        name="email"
        value={values.email}
        onChange={handleChange}
      />
      <input
        name="password"
        type="password"
        value={values.password}
        onChange={handleChange}
      />
    </form>
  );
}

Ключевые моменты:

  1. Имя хука должно начинаться с use
  2. Может использовать другие хуки внутри
  3. Инкапсулирует логику для переиспользования