Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- RTL8852BE
- CSS
- web component
- swiper
- Shadow DOM
- custom element
- github Actions
- Docker
- browserslist
- Prometheus
- AX210
- typescript
- GitHub Pages
- live share
- javascript
- 무선랜카드 교체
- 우아한테크코스
- 우아한테크코스 레벨3
- Grafana
- 터치 스와이프
- HTML
- 데모데이
- react
- 유한 상태 머신
- webpack
- 우테코
- scroll-snap
- docker-compose
- react-dom
- fastify
Archives
- Today
- Total
IT일상
React FC vs SFC vs VFC 본문
리뉴얼 된 블로그로 보기: https://solo5star.dev/posts/38/
TL;DR
* React.SFC, React.VFC는 deprecated되었다. React.FC를 사용하자.
* 만약 children이 있는 타입을 사용해야 한다면 PropsWithChildren<P> 타입을 사용하자.
const Example: React.FC<React.PropsWithChildren<{ message: string }>> = (props) => {
const { message, children } = props;
// return jsx
}
본문
FC, SFC, VFC는 모두 약어(alias)이다.
React.FC: React.FunctionComponent
React.SFC: React.StatelessFunctionComponent
React.VFC: React.VoidFunctionComponent
React.SFC는 React 16.7에서 deprecated 되었다. 함수형 컴포넌트는 Stateless, Stateful 둘 다 될 수 있는데 반면 SFC라는 이름은 혼동을 주기 때문이다. (관련 트위터 링크) (관련 PR 링크)
React 18 전까지는 FC는 props에 children을 가지는 타입이었다. 반면, React.VFC는 props에 children이 없었다.
하지만 React 18부터 FC는 기본적으로 children을 가지지 않도록 변경되었다.
/**
* @deprecated - Equivalent with `React.FC`.
*/
type VFC<P = {}> = VoidFunctionComponent<P>;
/**
* @deprecated - Equivalent with `React.FunctionComponent`.
*/
interface VoidFunctionComponent<P = {}> {
(props: P, context?: any): ReactElement<any, any> | null;
propTypes?: WeakValidationMap<P> | undefined;
contextTypes?: ValidationMap<any> | undefined;
defaultProps?: Partial<P> | undefined;
displayName?: string | undefined;
}
VFC의 선언을 보면 React.FC와 사실상 동일한 타입이기 때문에 deprecated된 것을 볼 수 있다.
'프론트엔드' 카테고리의 다른 글
CSS로 카드 뒤집는 3D 애니메이션 만들기 (6) | 2023.04.29 |
---|---|
javascript에서 한글에서 종성(받침)이 있는지 체크하는 방법 (0) | 2023.04.25 |
GitHub Actions: storybook 배포하기 (4) | 2023.04.23 |
GitHub Actions: CRA(Create React App) 빌드 + GitHub Pages 배포 자동화하기 (0) | 2023.04.23 |
CSS로 별점 기능 만들기 (2) | 2023.03.27 |
Comments