
state๋?
state๋ props์ฒ๋ผ App ์ปดํฌ๋ํธ์ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฌผ์ ์ํฅ์ ์ฃผ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ ๊ฐ์ฒด์ง๋ง,
props๋ ์ปดํฌ๋ํธ์ ์ ๋ฌ๋๋ ๋ฐ๋ฉด state๋ ์ปดํฌ๋ํธ ์์์ ๊ด๋ฆฌ๋๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
state๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋, ์ฌ์ฉํ๋ ์ชฝ๊ณผ ๊ตฌํํ๋ ์ชฝ์ ์ฒ ์ ํ๊ฒ ๋ถ๋ฆฌ์ํค๊ธฐ ์ํด์์ด๋ค.
state ์์
src/App.js
import React, { Component } from 'react';
import TOC from "./components/TOC"
import Content from "./components/Content";
import Subject from "./components/Subject";
class App extends Component{
constructor(props) {
super(props);
this.state = {
subject:{title:'WEB', sub:'World Wide Web!'},
contents:[
{id:1, title:'HTML', desc:'HTML is for information'},
{id:2, title:'CSS', desc:'CSS is for design'},
{id:3, title:'JavaScript', desc:'JavaScript is for interactive'}
]
}
}
render() {
return (
<div className="App">
<Subject
title={this.state.subject.title}
sub={this.state.subject.sub}>
</Subject>
<TOC data={this.state.contents}></TOC>
<Content title="HTML" desc="HTML is HyperText Markup Language."></Content>
</div>
);
}
}
export default App;
src/components/Subject.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;
src/components/TOC.js
import React, {Component} from 'react';
class TOC extends Component{
render() {
let lists = [];
let data = this.props.data
let i = 0;
while(i < data.length){
lists.push(<li key={data[i].id}><a href={"/content/"+data[i].id}>{data[i].title}</a></li>)
i = i + 1;
}
return(
<nav>
<ul>
{lists}
</ul>
</nav>
);
}
}
export default TOC;
src/components/Content.js
import React, {Component} from 'react';
class Content extends Component{
render() {
return(
<article>
<h2>{this.props.title}</h2>
{this.props.desc}
</article>
)
}
}
export default Content;
์ํ์ฝ๋ฉ์ React๊ฐ์๋ฅผ ๋ณด๊ณ ์์ฑ๋ ๊ธ์ ๋๋ค.
'Study > React ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| event (0) | 2022.07.20 |
|---|---|
| ์ปดํฌ๋ํธ ์ ์ (0) | 2022.07.14 |
| ๊ฐ๋ฐ ํ๊ฒฝ (0) | 2022.07.14 |