본문 바로가기
FrontEnd/React.js

Props 자료형 선언하기

by J._.cobb 2022. 6. 27.

Props 자료형 선언하기

자식 컴포넌트에서 props에 대한 자료형을 선언해 놓으면, 부모 컴포넌트에서 넘어오는 props 변수들의 자료형과 비교한다. 이 때, 자료형이 일치하지 않는다면, 경고 메시지로 알려주기 때문에 잘못된 데이터를 확인할 수 있다.

 

예제코드

App.js

import React from 'react';
import './App.css';
import PropsDatatype from './R018_PropsDatatype';

function App() {
  return (
    <div>
      <h1>Start React 200!</h1>
      <p>css 적용하기</p>
      <PropsDatatype 
        String="react"
        Number={200}
        Boolean={1==1}
        Array={[0,1,8]}
        Object= {{react:"리액트", twohundred:"200"}}
        Function={console.log("FunctionProps: function!")}/>
    </div>
  );
}

export default App;

R018_PropsDatatype.js

import React, {Component} from "react";
import datatype from 'prop-types';

class R018_PropsDatatype extends Component{
  render(){
    let{
      String, Number, Boolean, Array, Object, Function
    } = this.props
    return(
      <div style={{padding: "0px"}}>
        <p>StringProps: {String}</p>
        <p>NumberProps: {Number}</p>
        <span>BooleanProps: {Boolean.toString()}</span>
        <p>ArrayProps: {Array.toString()}</p>
        <p>Object JsonProps: {JSON.stringify(Object)}</p>
        <p>FunctionProps: {Function}</p>
      </div>
    )
  }
}

R018_PropsDatatype.propTypes = {
  String: datatype.number,
  Number: datatype.number,
  Boolean: datatype.bool,
  Array: datatype.array,
  Object: datatype.object,
  Function: datatype.func,
}

export default R018_PropsDatatype;

코드해설

Line 6~8

  • render() 함수 내에서 지역 변수를 선언해 props로 전달된 값들을 할당한다.

Line 22~29

  • props 값들 각각에 적합한 자료형을 선언한다.
  • line23에서 문자열 유형인 props.String 변수의 자료형을 number로 선언해 경고 메시지가 발생할 수 있도록 한다.
  • 경고 메시지는 개발자 도구 콘솔창에서 확인할 수 있다.
  • porps의 자료형 선언을 위해 line2에서 리액트 기본 내장 패키지인 prop-types를 임포트해 사용했다. propTypes가 데이터 유효성 검증을 하고 콘솔에 경고 메시지를 출력한다.

Line 11~16

  • 부모 컴포넌트에서 전달한 props 변수들을 화면에 표시한다. line11의 String 변수는 line23에서 자료형이 일치하지 않는다.
  • 하지만 에러가 아닌 경고 메시지이기 때문에 화면에 String변수가 정상적으로 표시된다.

결과화면

'FrontEnd > React.js' 카테고리의 다른 글

Props 객체형으로 사용하기  (0) 2022.06.27
Props Boolean으로 사용하기  (0) 2022.06.27
Props 사용하기  (0) 2022.06.27
jquery 사용하기  (1) 2022.06.27
map()함수 사용하기  (0) 2022.06.27