<html>
<body>
<header>
<h1>WEB</h1>
world wide web!
</header>
<article>
<h2>HTML</h2>
HTML is HyperText Markup Language.
</article>
</body>
</html>
위 html 파일의 각 시멘트태그를 리액트 컴포넌트로 바꿔보고 싶다면,
자동 생성되는 App.js 파일의 App
컴포넌트의 구조를 참고해 새로운 컴포넌트를 만들 수 있다. 예를 들어 Header
컴포넌트는 아래의 코드로 생성할 수 있다.
class Header extends Component {
render(){
return (
<header>
<h1>WEB</h1>
world wide web!
</header>
);
}
}
컴포넌트를 만들때 몇가지 원칙이 있다면,
그럼 이제 App
컴포넌트를 아래처럼 수정해 Header
컴포넌트를 화면에 띄울 수 있다.
class App extends Component {
render() {
return (
<div className="App">
<Header></Header>
</div>
);
}
}
몇 줄의 html 파일이 <Header></Header>
이렇게 줄어들었다. 웹 브라우저에게는 html 코드로 인식할 수 있게끔 리액트가 알아서 변환해서 전달한다.
App.js에는 App 컴포넌트 하나만 두는것이 좋기 때문에, 다른 컴포넌트들을 파일로 분리하는 작업이 필요하다.
src
폴더에 components
폴더를 만들고, 컴포넌트별로 자바스크립트 파일(ex. Subjects.js
)을 만들어 분리한다.
import React, {Component} from 'react';
class Subject extends Component {
render(){
return (
<header>
<h1>{this.props.title}</h1>
{this.props.sub}
</header>
);
}
}
export default Subject;
파일로 분리한 컴포넌트를 사용하기 위해서 우선 {component}
라는 객체를 리액트 앱으로부터 import
해와야 한다. 상단에 코드를 추가해주자.
//Subject.js
import React, {Component} from 'react';
그리고 새로 생성한 Subject
컴포넌트를 App
컴포넌트에서 사용하기 위해, Subject.js
에서는 export
를, App.js
에서는 import
를 넣어준다.
//Subject.js
export default Subject;
//App.js
import Subject from './components/Subject'
export
는 파일 하단에, import
는 파일 상단에!