기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

FrontEnd/React 기본

[React] React.js 강좌 8. 함수형 컴포넌트 props 정리

2021. 11. 25. 15:58
반응형

React 함수형 컴포넌트 props 정리

 

react에서는 클래스형과 함수형으로 컴포넌트를 작성할 수 있는데,

리엑트 16버전에서는 함수형 컴포넌트가 성능이 조금 더 빠르다고 페이스북 개발자가 언급한 이유가 있어서 이러한 함수형 컴포넌트를 사용하는 것을 권장하는 편입니다.

 

1. 기본 Props 사용

// src/MyComponent.js
import React from ‘react‘;

const MyComponent = (props) => {
	return <div>안녕하세요, 제 이름은 {props.name}입니다.</div>;
};

// 부모 측에서 props를 전달하지 않을 경우 default로 설정되는 이름
MyComponent.defaultProps = {
  name: '기본 이름'
};

export default MyComponent;





// 아래와 같이 표현할 수도 있습니다!
import React from 'react';

function MyComponent(props) {
    return (
        <div>안녕하세요, 제 이름은 {props.name}입니다.</div>
    );
}

MyComponent.defaultProps = {
  name: '기본 이름'
};

export default MyComponent;

 props는 Propeties를 줄인 표현으로 컴포넌트 속성을 설정할 때 사용하는 요소입니다. props는 해당 컴포넌트를 불러와 사용하는 부모 컴포넌트에서 설정할 수 있습니다!

 

우선 위 코드에서는 name이라는 props를 렌더링 하도록 되어 있는데, Props값은 컴포넌트 함수의 파라미터로 받아와서 사용할 수 있습니다!

 

위와 같이 props를 정의해두고 컴포넌트가 필요로 하는 props 값을 부모 컴포넌트(App.js)에서 지정해주면 됩니다.

여기서 defaultProps는 부모 측에서 props값을 지정하지 않았을 경우 default로 지정되는 초기 값을 의미합니다!

 

// App.js
import React from 'react';
import MyComponent from './MyComponent';
 
const App = () => {
  return <MyComponent name="React" />;
};
 
export default App;

 

보통은 부모(AppComponent)가 자식(MyComponent)로 데이터를 전달하고 싶을때 자주 사용됩니다.

 

 

 

 

 

 

 

 

2. props.children

children 속성은 부모 컴포넌트에서 사용된, 컴포넌트 태그 사이의 내용을 보여주는 props입니다.

// App.js
import React from 'react';
import MyComponent from './MyComponent';
 
const App = () => {
  return <MyComponent>리액트</MyComponent>;
};
 
export default App;




// src/MyComponent.js
import React from 'react';
 
const MyComponent = props => {
  return (
    <div>
      안녕하세요, 제 이름은 {props.name}입니다. <br />
      children 값은 {props.children}
      입니다.
    </div>
  );
};
 
 
export default MyComponent;

 여기서 props.children은 App.js에서 태그 사이로 작성된 ‘리액트’가 됩니다!

 

 

 

 

 

 

3. 비구조화 할당 문법을 사용한 props 내부 값 추출

비구조화 할당 문법은 객체에서 값을 추출해 내는 것인데, props라는 객체에서 값을 추출해서 아래와 같이 코드를 간단하게 만들 수 있는 것을 말합니다. 

// MyComponent.js
import React from 'react';
 
const MyComponent = ({ name, children }) => {
  return (
    <div>
      안녕하세요, 제 이름은 {name}입니다. <br />
      children 값은 {children}
      입니다.
    </div>
  );
};
 
 
export default MyComponent;
// App.js
import React from 'react';
import MyComponent from './MyComponent';
 
const App = () => {
  return <MyComponent name="React" children="Hello" />;
};
 
export default App;

부모에서 전달해주는 것까지는 모두 동일하지만, 자식에서 전달받을 때 props로 받거나 { name, children }으로 받거나 둘 중에 하나를 선택할 수 있는데, 결과는 동일합니다!

props.name으로 사용할 것이냐, 그냥 name으로 사용할 것이냐의 차이입니다.

 

 

 

 

 

 

4. propTypes

컴포넌트를 사용할 때 필수적인 props을 지정하거나, props의 타입을 지정할 때는 propTypes를 사용합니다.

 

import React from ‘react‘;
import PropTypes from ‘prop-types‘;

const MyComponent = ({ name, children }) => {
  return (
    <div>
      안녕하세요, 제 이름은 {name}입니다. <br />
      children 값은 {children}
      입니다.
    </div>
  );
};

MyComponent.propTypes = {
  name: PropTypes.string.isRequired,
  children: PropTypes.number
};

export default MyComponent;

 코드 하단에 propTypes로 name과 children의 타입을 지정한 것을 확인할 수가 있는데,

PropTypes.string.isRequired는 문자열이 아니거나 혹은 값이 지정되지 않았을 때,

PropTypes.numer는 값이 숫자가 아니면 콘솔창에 오류가 발생되어 오류를 검출해낼 수가 있습니다.

 

 

 

반응형
저작자표시 변경금지 (새창열림)

'FrontEnd > React 기본' 카테고리의 다른 글

[React] React.js 강좌 10. map, slice, concat, spread 사용법  (0) 2021.12.07
[React] React.js 강좌 9. Input 상태 관리하기  (0) 2021.11.26
[React] React.js 강좌 7. 조건부 연산자  (0) 2021.11.25
[React] React.js 강좌 6. Error Catch  (0) 2021.11.25
[React] React.js 강좌 5. 이벤트 처리, Bind  (0) 2021.11.19
    'FrontEnd/React 기본' 카테고리의 다른 글
    • [React] React.js 강좌 10. map, slice, concat, spread 사용법
    • [React] React.js 강좌 9. Input 상태 관리하기
    • [React] React.js 강좌 7. 조건부 연산자
    • [React] React.js 강좌 6. Error Catch
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바