: 부모 컴포넌트로 부터 자식 컴포넌트에게 데이터를 보낼 수 있게 해주는 방법
function App() {
return (
<div>
<Btn title="save1" color="blue" idx="first" />
<Btn title="save2" color="red" />
</div>
);
}
import PropTypes from "prop-types";
// props = {title:"save1" , color:"blue" , idx :"first"} 이거임!
function Btn({ title, color, idx }) {
return (
<div>
<button style={{ color, backgroundColor: 'yellowgreen' }}>
{title}
</button>
<span>{idx}</span>
</div>
);
}
* Btn에서 전달받은 props={title : "save1" , color : "blue"}; 이런 형태임.
* 구조분해할당 활용한다면
{title , color } = {title : "save1" , color : "blue"};
const title = prop.title; // title을 쓰면 바로 "save1"이 나옴
const color = prop.color; // color을 쓰면 바로 "blue"가 나옴
Btn.defaultProps = {
idx: 'second',
};
function Btn({ title, color, number = "second" }) {
return (
<span>{number}</span>
);
}
1. npm i prop-types 로 터미널에 설치
2. <script src="https://unpkg.com/prop-types@15.7.2/prop-types.js"></script>
: isRequired 붙이면 prop값 없을시 콘솔에 경고창 뜸 (코드의 실행을 막진 않음)
Btn.propTypes = {
title: PropTypes.string.isRequired,
color: PropTypes.string,
number: PropTypes.number,
};
import PropTypes from "prop-types";
function App() {
const [value, setValue] = React.useState("Save Changes");
return (
<div>
<Btn title={value} color="blue" />
<Btn title={12} />
// 문제1. title값의 타입이 string이 아니라 number임.
// 문제2. color값은 필수값인데 값이 없음
</div>
);
}
Btn.propTypes = {
title: PropTypes.string,
color: PropTypes.string.isRequired,
};
function Btn({ title, color }) {
return (
<div>
<button style={{ backgroundColor : color }}>{title}</button>
</div>
);
}
→ 출력결과
→ 경고창만 뜨고, 코드의 실행을 막진 않음