리액트 | props

2023. 1. 16. 11:11·React

https://goddaehee.tistory.com/300

props ( properties 프로퍼티의 줄임말 )

- 상위 컴포넌트가 하위 컴포넌트에 값을 전달할때 사용한다.(단방향 데이터 흐름 갖는다.)
- 프로퍼티는 수정할 수 없다는 특징이 있다.(자식입장에선 읽기 전용인 데이터이다.)

 

1. 상위 컴포넌트에서 하위 컴포넌트로 전달하는 매개변수

2. 객체 형태로 전달되기 때문에 {}로 값을 받습니다.

3. props은 읽기전용입니다.(값은 부모에서 바꿔서 전달합니다.)

 

사용방법

 - 프로퍼티에 문자열을 전달할 때는 큰따옴표(" ")를, 문자열 외의 값을 전달할 때는 중괄호({ })를 사용 한다. 

 

 사용방법 1 

App.js

import { Fragment } from "react";
import MyComponent from "./component/MyComponent";
import MyComponent2 from "./component/MyComponent2";
import MyComponent3 from "./component/MyComponent3";

const App = () => {
    return (
        <Fragment>
            <h3>나의 App.JS</h3>
            <MyComponent name={'홍길동'} age={20}/>           
            <MyComponent2/>  
            <MyComponent3/>           
        </Fragment>
    )
}

export default App; //내보내기

MyComponent.js

const MyComponent = ({name, age}) => {
    console.log(props);
    const a = props.name;
    const b = props.age;

    return (
         <Fragment>  
            <div>나의 첫번째 컴포넌트</div>
            <div>props값: {a}</div>
            <div>props값: {b}</div>
        </Fragment>
    )
}

export default MyComponent;

 

 

 사용방법 2

 

MyComponent.js

const MyComponent = (props) => {

    const {name,age,email} = props;


    return (
        <Fragment>  
            <div>나의 첫번째 컴포넌트</div>
            <div>props값: {name}</div>
            <div>props값: {age}</div>
            <div>props값: {email}</div>
        </Fragment>
    )
}
export default MyComponent;

 

props 기본값 지정하기 

컴포넌트명.defaultProps={}

MyComponent.js
MyComponent.defaultProps = {
    name : "이름없음",
    age : 0,
    email : "bb@naver.com",
    addr : "서울시" //addr은 전달되지 않지만 기본값
}

전달되지 않는 매개값은 defaultProps에서 지정한 값이 기본값이 된다.

 

props의 타입검증

컴포넌트명.propTypes={}
 
타입이 맞지 않으면 개발자 도구에 에러뜸

 임포트 : import propTypes from "prop-types"; //프롭스 타입검증

 

isRequired : 값이 반드시 있어야 함 ( null이라도 ) 

MyComponent.propTypes = {
    name : propTypes.string, //타입만 검증
    age : propTypes.number, //타입만 검증
    email : propTypes.string.isRequired //문자열타입 반드시 전달(비면 안된다.)
}

 

props의 같은 키의 값이 여러번 들어가게 된다면

import { Fragment } from "react";
import MyComponent from "./component/MyComponent";
import MyComponent2 from "./component/MyComponent2";
import MyComponent3 from "./component/MyComponent3";




const App = () => {
    return (
        <Fragment>
            <h3>나의 App.JS</h3>
            {/* props */}  
            <MyComponent name={'홍길동'} age={20}/>           
            <MyComponent2 name={'홍길자'}/>  
            <MyComponent2 name={'이순신'}/>
            {/* 클래스형 props */}  
            <MyComponent3 name={'강감찬'}/>           
        </Fragment>
    )
}

export default App; //내보내기

이렇게 순서대로 나온다.

'React' 카테고리의 다른 글

리액트 | 이벤트 핸들링  (0) 2023.01.16
리액트 | state  (0) 2023.01.16
리액트 | jsx 문법  (0) 2023.01.14
리액트 | 컴포넌트  (0) 2023.01.13
리액트 | 환경설정  (0) 2023.01.13
'React' 카테고리의 다른 글
  • 리액트 | 이벤트 핸들링
  • 리액트 | state
  • 리액트 | jsx 문법
  • 리액트 | 컴포넌트
개발 공부
개발 공부
  • 개발 공부
    개발 공부
    개발 공부
  • 전체
    오늘
    어제
    • 전체보기 (163)
      • 프로젝트 (1)
      • JavaScript (46)
      • Node.js (3)
      • Next.js (5)
      • React (17)
      • NoSQL (0)
      • HTML,CSS (3)
      • CS (6)
      • Java (35)
      • Spring (6)
        • Spring의 정석 (1)
      • Spring boot (1)
      • MySQL (1)
      • 리눅스 (16)
      • JSP (9)
      • AWS (0)
      • git (2)
      • 알고리즘 (1)
      • ect (7)
      • Project (2)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    자바
    자바의 정석
    Java
    오블완
    Java의 정석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발 공부
리액트 | props
상단으로

티스토리툴바