- 유지 보수하기 쉬운 코드
- 인터페이스를 쉽게 파악할 수 있는 코드
MyComponent.propTypes = {
//...
};
export default const MyComponent = ({prop1, prop2}) => {
//...
}
const COLUMNES = [
{ id: 1, name: 'Naeun', age: 29 },
{ id: 2, name: 'Tomi', agr: 10 }
]
const URL_PRODUCT = '/api/products';
// CustomHook
const useWindowWidth = () => {
const [width, setWidth] = useState(window.innerWidth);
useEffect(() => {
const onReSize = () => setWidth(window.innerWidth);
window.addEventListener("resize", onResize);
return () => {
window.removeEventListener("resize", onResize);
};
}, []);
속성갑의 타입 정보를 정의할 때 사용하는 리액트 공식 패키지.
잘못된 속성값을 입력할 때 콘솔에 에러메세지를 출력한다.
User.propTypes = {
male: PropTypes.bool.isRequired, // 필수 입력사항
age: PropTypes.number,
// 함수의 매개변수와 반환값에 대한 타입 정보는 정의할 수 없다.
type: PropTypes.oneOf(["gold", "silver", "bronze"]),
onChangeName: PropsTypes.func,
onChangeTitle: PropsTypes.func.isRequired // 필수 입력사항
};
정적 타입 언어: TypeScript
&& 연산자 vs || 연산자
const v1 = 'ab' && 0 && 2 // 0 (= false)
const v2 = 'ab' && 1 && 2 // 2 (= 마지막 값)
const v3 = 0 || 'ab' || 2 // 'ab' (= true)
const v4 = 0 || '' || false // false (= 마지막 값)
Truthy & Falsy
Falsy 한 값 앞에 느낌표를 붙여주면 true로 전환된다.
console.log(!undefined) // true console.log(!null) // true console.log(!0) // true console.log(!NaN) // true (NaN: Not a Number) console.log(!![]) // true
컴포넌트가 비즈니스 로직이나 상탯값을 가지고 있으면 재사용하기 힘들다.
비즈니스 로직이나 상탯값이 없는 Presentation 컴포넌트를 구분하여 관리한다.
HoC를 이용해 Container Component가 Presentational Component에 데이터를 주입해주는 방법을 사용한다. props drilling