[ React ] ProtoTypes 설치하기 | ProtoTypes install

2021. 2. 13. 00:28·Archive/Develop
728x90
반응형

나는 VSCode 를 사용한다.

 

 

 

터미널에서 npm i prop-types 입력한다.

 

 

npm i prop-types

 

 

 

 

 

 

좀 기다려준다.

 

 

 

 

prop-types 는 내가 전달받은 prop 이 내가 원하는 prop 인지를 확인해 주는 역할을 한다.

 

 

 

 

잘 설치되었는지 확인해보자.

 

 

 

package.json 을 보면 "dependencies" 에 prop-types 가 있는지를 확인할 수 있다.

 

 

 

 

 

정상적으로 설치된 것을 확인할 수 있다.

 

 

 

 

간단하게 사용해보자.

 

 

우선 import를 해줘야한다.

 

 

 

import ProtoTypes from "prop-types";

 

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

function Butter({name, img}){
  return(
    <div>
      <h1>Do you know {name}?</h1>
      <img src={img} />
    </div>
         
  )
}

const doYouKnow = [
  {
    id : 1,
    name : "Butter",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.3ngupVxCT3OmGg5AkbyazwHaFe%26pid%3DApi&f=1"
  },
  {
    id : 2,
    name : "BTS",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse3.mm.bing.net%2Fth%3Fid%3DOIP.IsHrnAKvQqN3f5AVi0KU-wHaE8%26pid%3DApi&f=1"
  },
  {
    id : 3,
    name: "Son",
    img:
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.fLj_aPPfMYXtvG7Ttlbu_wHaEo%26pid%3DApi&f=1"
  },
  {
    id : 4,
    name : "Twice",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.OCSAST2D7gyP44mSoMo0dgHaFy%26pid%3DApi&f=1"
  },
  {
    id : 5,
    name : "Psy",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.mm.bing.net%2Fth%3Fid%3DOIP.6lhGd_oCuFgnm8x9OK7T6QHaE5%26pid%3DApi&f=1"

  }
]


function App() {
  return (
    <div>
      <h1>Halo!</h1>
      {doYouKnow.map(famous=> <Butter key = {famous.id} name={famous.name} img = {famous.img}/>)}
    </div>
  );
}

export default App;

 

 

 

 

import 를 한 코드는 위와 같다.

 

이제 propTypes 라는 prop 을 정의해주도록 하자.

 

 

 


Butter.propTypes = {
  name : PropTypes.string.isRequired,
  img : PropTypes.number.isRequired
};

 

 

name 의 proptypes 를 스트링(필수) 로 하고, img 도 이와 마찬가지로 스트링으로 설정했다.

 

 

위 코드를 보면 알겠지만, img 는 현재 number 이 아닌 string 형이다.

 

 

아래 코드로 실행해보겠다.

 

 

 

 

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

function Butter({name, img}){
  return(
    <div>
      <h1>Do you know {name}?</h1>
      <img src={img} />
    </div>
         
  )
}

const doYouKnow = [
  {
    id : 1,
    name : "Butter",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.3ngupVxCT3OmGg5AkbyazwHaFe%26pid%3DApi&f=1"
  },
  {
    id : 2,
    name : "BTS",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse3.mm.bing.net%2Fth%3Fid%3DOIP.IsHrnAKvQqN3f5AVi0KU-wHaE8%26pid%3DApi&f=1"
  },
  {
    id : 3,
    name: "Son",
    img:
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.fLj_aPPfMYXtvG7Ttlbu_wHaEo%26pid%3DApi&f=1"
  },
  {
    id : 4,
    name : "Twice",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.OCSAST2D7gyP44mSoMo0dgHaFy%26pid%3DApi&f=1"
  },
  {
    id : 5,
    name : "Psy",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.mm.bing.net%2Fth%3Fid%3DOIP.6lhGd_oCuFgnm8x9OK7T6QHaE5%26pid%3DApi&f=1"

  }
]

Butter.propTypes = {
  name : PropTypes.string.isRequired,
  img : PropTypes.number.isRequired
};

function App() {
  return (
    <div>
      <h1>Halo!</h1>
      {doYouKnow.map(famous=> <Butter key = {famous.id} name={famous.name} img = {famous.img}/>)}
    </div>
  );
}

export default App;

 

 

 

 

 

 

 

html 로 나오는 것에는 문제가 없지만, 콘솔을 보면

 

 

img 의 type 이 문제가 되었다고 얘기해준다.

 

 

 

 

proptypes 는 이런 식으로 우리가 원하는 타입을 지정하고 이를 어길 시 경고를 해준다.

 

 

 

img 를 string 으로 바꿔보자.

 

 

 

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

function Butter({name, img}){
  return(
    <div>
      <h1>Do you know {name}?</h1>
      <img src={img} />
    </div>
         
  )
}

const doYouKnow = [
  {
    id : 1,
    name : "Butter",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.3ngupVxCT3OmGg5AkbyazwHaFe%26pid%3DApi&f=1"
  },
  {
    id : 2,
    name : "BTS",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse3.mm.bing.net%2Fth%3Fid%3DOIP.IsHrnAKvQqN3f5AVi0KU-wHaE8%26pid%3DApi&f=1"
  },
  {
    id : 3,
    name: "Son",
    img:
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.fLj_aPPfMYXtvG7Ttlbu_wHaEo%26pid%3DApi&f=1"
  },
  {
    id : 4,
    name : "Twice",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.OCSAST2D7gyP44mSoMo0dgHaFy%26pid%3DApi&f=1"
  },
  {
    id : 5,
    name : "Psy",
    img :
      "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.mm.bing.net%2Fth%3Fid%3DOIP.6lhGd_oCuFgnm8x9OK7T6QHaE5%26pid%3DApi&f=1"

  }
]

Butter.propTypes = {
  name : PropTypes.string.isRequired,
  img : PropTypes.string.isRequired
};

function App() {
  return (
    <div>
      <h1>Halo!</h1>
      {doYouKnow.map(famous=> <Butter key = {famous.id} name={famous.name} img = {famous.img}/>)}
    </div>
  );
}

export default App;

 

 

 

 

 

 

경고가 뜨지 않는 것을 확인할 수 있다.

 

 

 

 

prop-types 를 더 자세히 알고 싶다면, 아래 링크를 참조하면 될 것 같다.

 

 

 

 

www.npmjs.com/package/prop-types

 

prop-types

Runtime type checking for React props and similar objects.

www.npmjs.com

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] ES6 : Block scope | var, let 변수 유효범위  (0) 2021.02.15
[ JavaScript ] ES6 : let 과 const 개념 | let & const 공통점/차이점  (0) 2021.02.14
[ React ] 동적 컴포넌트 생성 | Each child in a list should have a unique "key" prop 에러 해결  (2) 2021.02.12
[ JavaScript ] var & var hoisting(호이스팅)  (0) 2021.02.12
[ React ] 재사용가능한 Component  (0) 2021.02.11
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] ES6 : Block scope | var, let 변수 유효범위
  • [ JavaScript ] ES6 : let 과 const 개념 | let & const 공통점/차이점
  • [ React ] 동적 컴포넌트 생성 | Each child in a list should have a unique "key" prop 에러 해결
  • [ JavaScript ] var & var hoisting(호이스팅)
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    오라클
    장고
    자바스크립트 API
    카카오 100일 프로젝트
    보안뉴스
    파이썬 알고리즘
    Python
    자바스크립트 객체
    코드업 기초
    C++
    Django
    javascript
    Oracle
    oracle db
    Codeup
    파이썬 문제
    파이썬 백준
    파이썬 기초 문제
    코드업 파이썬 기초 100제
    자바스크립트
    코드업
    백준 풀이
    백준
    백준 문제풀이
    Git
    백준 파이썬
    비박스
    파이썬 기초
    파이썬
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ React ] ProtoTypes 설치하기 | ProtoTypes install
상단으로

티스토리툴바