English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 장에서는 컴포넌트를 조합하여 애플리케이션을 더 쉽게 유지보수하는 방법을 배웁니다. 이 방법은 페이지의 나머지 부분에 영향을 미치지 않고 컴포넌트를 업데이트하고 변경할 수 있게 합니다.
이 예제에서의 첫 번째 컴포넌트는 App입니다. 이 컴포넌트는 Header와 Content의 소유자입니다. 우리는 Header와 Content를 각각 생성하고, 이를 App 컴포넌트의 JSX 트리에 추가하고 있습니다. 애플리케이션 컴포넌트만이 내보내어야 합니다.
import React from 'react'; class App extends React.Component { render() { return ( <div> <Header/> <Content/> </div> ); } } class Header extends React.Component { render() { return ( <div> <h1>Header</h1> </div> ); } } class Content extends React.Component { render() { return ( <div> <h2>Content</h2> <p>The content text!!!</p> </div> ); } } export default App;
이를 페이지에 표시할 수 있도록 위해, main.js 파일에 이를 가져오고 reactDOM.render()를 호출해야 합니다. 우리는 환경을 설정할 때 이미 이렇게 했습니다.
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App /, document.getElementById('app'));
위 코드는 다음과 같은 결과를 생성합니다.
Header 컴포넌트는 이전 예제와 같이 추가되었습니다. 이는 상태가 필요하지 않기 때문입니다. table과 tbody 요소를 content 대신 생성합니다. 표시를 사용하여, 이러한 요소에서 데이터 배열의 각 객체에 TableRow를 동적으로 삽입합니다.
EcmaScript 2015좌표표기법(=>)는 오래된 JavaScript 문법보다 깔끔하게 보입니다. 이는 우리가 더 적은 코드行으로 요소를 생성하는 데 도움이 됩니다. 많은 항목을 포함한 목록을 생성할 때 특히 유용합니다.
import React from 'react'; class App extends React.Component { constructor() { super(); this.state = { data: [ { "id":1, "name":"Foo", "age":""}20" }, { "id":2, "name":"Bar", "age":""}30" }, { "id":3, "name":"Baz", "age":""}40" } ] } } return ( <div> <Header/> <table> <tbody> {this.state.data.map((person, i) => <TableRow key = {i} data = {person} />)} </tbody> </table> </div> ); } } class Header extends React.Component { render() { return ( <div> <h1>Header</h1> </div> ); } } class TableRow extends React.Component { render() { return ( <tr> <td>{this.props.data.id}</td> <td>{this.props.data.name}</td> <td>{this.props.data.age}</td> </tr> ); } } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App/, document.getElementById('app'));
우리는 map() 함수 내에서 key = { i }를 사용했습니다. 이는 React가 전체 목록을 다시 표시하는 대신 필요한 요소만 업데이트하도록 도와줍니다. 많은 동적 생성된 요소들에 대해 이는 큰 성능 향상입니다.