React 컴포넌트는 왜 화살표 함수가 표준이 되었을까?
또, Next.js 시대라고 할 수 있는 요즘 function 선언식이 불편하다고 평가받는 이유도 함께 알아보자.
export default function Skills() {
return <div>...</div>;
}
this가 바인딩됨 (React에서는 의미가 거의 없음)const Skills = () => {
return <div>...</div>;
};
export default Skills;
this를 갖지 않음 → React 함수 컴포넌트와 더 자연스럽게 맞음컴포넌트를 하나의 “값”처럼 관리할 수 있기 때문에 컴포넌트 그룹을 객체/배열로 묶는 React의 패턴과 잘 맞다고 할 수 있다.
const components = {
Hero,
About,
Skills,
};
React 생태계는 훅 이후 완전히 화살표 함수 중심으로 이동했다고 한다.
const useFetch = () => { ... }
const Skills = () => { ... }
같은 패턴으로 작성함으로써 일관된 코드베이스를 가진다.
함수 선언식은 호이스팅되기 때문에 어디 있는지도 모르는 함수가 먼저 실행될 수 있는데, 컴포넌트에서는 전혀 이점이 아니다. 화살표 함수는 명시적으로 직관적 흐름을 강제할 수 있다.
Next.js는 컴포넌트를 파일 단위로 해석한다.
특히 클라이언트 컴포넌트 / 서버 컴포넌트 구분이 생긴 이후로 컴포넌트 선언 방식이 더 중요해졌다.
파일명과 컴포넌트 이름은 반드시 일치하지 않아도 되지만, Next.js 구조에서는 대부분 파일명 기반으로 라우팅되기 때문에 화살표 함수 + default export 가 가장 직관적이다.
const Page = () => { ... }
export default Page
서버 컴포넌트는 그냥 함수를 반환하는 파일이기 때문에 굳이 function 선언식을 사용할 이유가 없다.
Next.js 파일 구조는 컴포넌트가 많은 경우가 대부분이다. 그렇게 때문에 짧은 문법이 유리하다.
React/Next.js에서는 화살표 함수 컴포넌트를 쓰는 것이 더 현대적이고 표준적이다.
이유 요약:
React 생태계는 이미 화살표 함수 중심으로 넘어왔다고 한다. function 선언식도 문제 없이 잘 작동하지만, Next.js를 포함한 최신 프레임워크 흐름과 협업 환경을 고려하면
화살표 함수가 더 효율적이고, 유지보수성이 좋고, 표준적이다.