props
로 전달한다. 이 props
는 컴포넌트에서 함수의 매개변수로 받아진다. 그리고 JSX 내부에서 {}
기호로 감싸서 사용할 수 있다.//부모 컴포넌트에서 props 전달해준다.
//속성 = 속성값 을 작성해준다.
//이 경우 title, contnet, number 라는 속성이름으로 보내지게 된다.
<FunPropsEx title="sesac" content="hello world" number={5} />
//자식 컴포넌트에서 props를 전달받아서 사용한다.
//이 경우 props를 구조분해해서 가져온다.
//꼭 실제로 넘어오는 속성이름을 사용해야 한다!
function FunPropsEx({ title, content, number }) {
return (
<>
<div>함수형 컴포넌트를 이용 (Props) </div>
<div>
제목은 {title}, 내용은 {content}, 숫자는 {number}
</div>
</>
);
}
▶️ props 가져오는 법 _ 1) 매개변수 자체로 가져오기
//매개변수 props 안에 담겨있는 속성들을 사용하는 것이기 때문에
//{ } 안에서 사용할 때 {props.속성이름} 형식으로 작성해준다.
function FunPropsEx(props) {
return (
<>
<div>함수형 컴포넌트를 이용 (Props) </div>
<div>
제목은 {props.title}, 내용은 {props.content}
</div>
</>
);
}
▶️ props 가져오는 법 _ 2) 컴포넌트 내에서 구조분해
//매개변수 props자체로 받아오되
//각 속성들을 사용하기 위해 컴포넌트 내에서 구조분해 해준다.
//이 때는 구조분해를 했기 때문에 {속성이름} 자체로 사용이 가능하다.
function FunPropsEx(props) {
const { title, content } = props;
return (
<>
<div>함수형 컴포넌트를 이용 (Props) </div>
<div>
제목은 {title}, 내용은 {content}
</div>
</>
);
}
▶️ props 가져오는 법 _ 3) props를 받아올 때 부터 구조분해
//이 때는 꼭! 부모컴포넌트에서 넘겨주는 실제 속성 이름을 사용해야 한다!
function FunPropsEx({ title, content }) {
return (
<>
<div>함수형 컴포넌트를 이용 (Props) </div>
<div>
제목은 {title}, 내용은 {content}
</div>
</>
);
}
▶️ props 가져오는 법 _ 4) proptypes를 이용한 명시, defaultProps
//예상과 다른 props가 넘어와도 오류 콘솔이 나지 않기 때문에 코드가 길어질수록 오류를 찾기 힘들 수 있다.
//유연한 js의 특징으로 인해 실행은 되더라도 예기치 못한 오류가 발생할 수 있다.
//그러니 proptype를 이용해서 어떤 props가 넘어올지 명시해준다!
//PropTypes를 import해주어야 한다.
import PropTypes from "prop-types";
function FunPropsEx({ title, content, number }) {
return (
<>
<div>함수형 컴포넌트를 이용 (Props) </div>
<div>
제목은 {title}, 내용은 {content}, 숫자는 {number}
</div>
</>
);
}
//props가 안넘어오더라도 기본값으로 보여줄 props를 설정해준다.
//데이터 누락을 방지.
FunPropsEx.defaultProps = {
title: "이렇게사용",
};
//proptypes를 이용해 넘어올 props의 데이터 형식을 세부적으로 지정해준다.
FunPropsEx.propTypes = {
title: PropTypes.string,
content: PropTypes.string.isRequired,
number: PropTypes.number,
};
▶️ props 가져오는 법 _ 5) props.children
{props.children}
에 담기게 된다.//부모 컴포넌트
<FunPropsEx title="sesac">
여기에 작성되는 내용들이 children이다! 내부에 작성된 모든 내용들. 여기서 작성한 내용을 자식 컴포넌트가 사용하는 것.
<FunPropsEx/>
//자식 컴포넌트
function FunPropsEx(props) {
return (
<>
<div>{props.children}</div>
</>
);
}
render()
를 사용하는 것.import { Component } from "react";
를 해준다.class ClassPropsEx extends Component {
render() {
return (
<>
<div>클래스형 컴포넌트를 이용 (Props) </div>
<div>
제목은 {this.props.title}, 내용은 {this.props.content}, 숫자는 {""}
</div>
</>
);
}
}
ClassPropsEx.defaultProps = {
title: "코딩온",
};
ClassPropsEx.propTypes = {
title: PropTypes.string,
content: PropTypes.string.isRequired,
number: PropTypes.number,
};