props
- properties의 줄임말.
- 어떠한 값을 컴포넌트에게 전달해줘야 할 때 props를 사용.
import React from "react";
import MyPropsSub from "../components/MyPropsSub";
const MyProps = () => {
console.clear();
return (
<div>
{}
{}
<h2>MyProps</h2>
{}
<MyPropsSub />
<MyPropsSub name="민호" age="19" />
<MyPropsSub name="수영" age={21} />
</div>
);
};
export default MyProps;
defaultProps
- 컴포넌트에 props를 지정하지 않았을 때를 대비하여 기본값을 JSON으로 정의해 둘 수 있다. (가급적 권장)
import React from "react";
const MyPropsSub = (props) => {
console.group("MyPropsSub");
console.log(props);
console.log(typeof props.name);
console.log(typeof props.age);
console.groupEnd();
return (
<div>
<h3>MyPropsSub</h3>
<p>
제 이름은 <b>{props.name}</b>이고 나이는 <b>{props.age}</b>입니다.
</p>
</div>
);
};
MyPropsSub.defaultProps = {
name: "이름없음",
age: 20,
};
export default MyPropsSub;
PropTypes
MyPropTypesSub.propTypes = {
name: PropTypes.string,
age: PropTypes.number,
hobby: PropTypes.string.isRequired,
};
의문점
- 그냥 jsx를 쓸때보다 두배로 시간이 드는것 같은데 이런 불편을 감수할 만큼 쓰일 필요가 있는지? (놓칠 수 있는 오류를 잡기 위해서?)
해결
- 다시 생각해보니 그냥 jsx는 컴포넌트에서 주는대로 받아왔고
- props는 함수의 파라미터처럼 컴포넌트를 호출할때 원하는 값을 입력할수 있다는 점에서 큰 차이가 있다.
- 또 jsx는 컴포넌트쪽에서 데이터를 받아와야하지만 / props는 호출하는 쪽에서 데이터를 적용 가능한 차이도 있는 것으로 보인다.