Javascript XML로 자바스크립트의 확장 문법
MyComponent.js
const MyComponent = () => {
return <div>나의 컴포넌트</div>
};
// 방법 1.
export default MyComponent;
// 방법 2.
export MyComponent;
// 방법 1로 모듈 내보낸 경우
import MyComponent from './MyComponent';
// 방법 2로 모듈 내보낸 경우
import { MyComponent } from './MyComponent';
App.js
const App = () => {
return <MyComponent />
};
Client-Server 시스템을 예로 들자면,
하나의 서버가 10개의 클라이언트에게 정보를 제공할 때
모듈은 '서버 + 클라이언트 = 2개'를 가지지만
컴포넌트는 '서버 + 클라이언트 10개 = 11개'가 된다.
참고: 모듈과 컴포넌트의 차이점
컴포넌트 간에 값을 주고 받기 위해 props, state를 사용한다.
properties를 줄인 표현으로 컴포넌트 속성을 설정할 때 사용하는 요소이다.
부모 컴포넌트가 설정할 수 있다.
<MyComponent>children</MyComponent>
컴포넌트는 자신의 props를 읽기 전용으로 밖에 확인할 수 없다.
값을 내부적으로 업데이트 하기 위해 state를 사용한다.
MyComponent.js
const MyComponent = props => {
// 비구조화 할당 문법
const { name, children } = props;
return (
<div>
안녕하세요. 제 이름은 {name}입니다. <br />
children 값은 {children} 입니다.
</div>
);
}
MyComponent.defaultProps = {
name: '기본값';
};
export default MyComponent;
MyComponent.js
import PropTypes from 'prop-types';
// 비구조화 할당 문법
const MyComponent = ({ name, children }) => {
return (...);
};
MyComponent.defaultProps = {
name: '기본 이름';
};
MyComponent.propTypes = {
name: PropTypes.string;
};
export default MyComponent;