Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

pgg-dev

[TypeScript] 타입스크립트에서 React Functional Component 사용하기 본문

TypeScript

[TypeScript] 타입스크립트에서 React Functional Component 사용하기

pgg-dev 2021. 1. 18. 07:34

React.FC 타입을 사용할 때

장점

첫 번째, 기본으로 props 값에 children props가 탑재되기 때문에 

type 또는 interface에 children: React.ReactNode를 설정해주지 않아도 된다.

 

 

두 번째, contextTypes, defaultProps, displayName 등 자동완성이 된다.

 

 

하지만 단점도 존재한다.

다음 코드에 mark 속성에 defaultProps를 설정해줬지만 에러가 난다.

즉, defultProps가 제대로 동작하지 않는다.

이 문제는 선택속성으로 바꿔줘야 에러를 해결할 수 있다.

import React from "react";

type GreetingsProps = { name: string; mark: string };

const Greetings: React.FC<GreetingsProps> = ({ name, mark }) => {
  return (
    <div>
      {name} {mark}
    </div>
  );
};

Greetings.defaultProps = {
  mark: "!"
};

export default Greetings;

 

또한 선택 속성의 defaultProps를 설정해줬는데도 undefined일수도 있다고 뜬다.

 

 

그래서 배열은 다음과 같이 사전에 유효한지 체크한후 배열 내장함수를 사용할수있다.

import React from "react";

type GreetingsProps = {
  name: string;
  mark?: string;
  arr?: number[];
};

const Greetings: React.FC<GreetingsProps> = ({ name, mark, arr }) => {
  
  if (!arr) return null;
  arr.map((item) => console.log(item));

  return (
    <div>
      {name} {mark}
    </div>
  );
};

Greetings.defaultProps = {
  mark: "!",
  arr: [1, 2, 3]
};

export default Greetings;

 

React.FC에서 defaultPops를 사용할려면 비구조화 할당하는 단계에서 사용해야한다.

 

 

React.FC 타입을 사용하지 않고 function 키워드로 일반 함수를 사용했을 때

defaultProps가 잘 동작하는 것을 확인 할 수있다.

import React from "react";

type GreetingsProps = {
  name: string;
  mark: string;
};

function Greetings({ name, mark }: GreetingsProps) {
  return (
    <div>
      {name} {mark}
    </div>
  );
}

Greetings.defaultProps = {
  mark: "!"
};

export default Greetings;

 

'TypeScript' 카테고리의 다른 글

[TypeScript] Interface, Type Alias  (0) 2020.03.28
Comments