
✅ Варіант 1 — декларація функції
export default function MyComponent({ content }: FC<MyComponentProps>) {
return <div>{content}</div>;
}
Плюси:
- Класичний синтаксис функцій — краще читається в логах стек-трейсів та дебагу.
- Підтримує функціональне підняття (hoisting).
- Часто вважається більш "надійним" для публічних API компонентів (особливо в бібліотеках).
- Тип
FC<MyComponentProps>
тут використано в місці, де TypeScript не чекає його (на параметрах, а не на самій функції), що може бути не зовсім коректно. Краще:
export default function MyComponent({ content }: MyComponentProps) {
...
}
✅ Варіант 2 — функціональний вираз (arrow function):
const MyComponent: FC<MyComponentProps> = ({ content }) => {
return <div>{content}</div>;
};
-
Чітко видно тип компонента (
FC<...>
). - Легко інтегрується з хуками або вкладеними функціями.
- Більш узгоджено зі стилем функціонального програмування.
- Немає підняття функції (hoisting), тому її не можна викликати до оголошення.
🔍 Рекомендація:
💡 Компроміс — поєднаний, але чистий варіант:
type MyComponentProps = { content: string };
export default function MyComponent({ content }: MyComponentProps) {
return <div>{content}</div>;
}