๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐“ก๐“ธ๐“ธ๐“ถ3:๐น๐“‡๐‘œ๐“ƒ๐“‰๐‘’๐“ƒ๐’น/๐“ก๐Ÿฅ๐Ÿข๐Ÿค:๐‘…๐‘’๐’ถ๐’ธ๐“‰

[React] 2. ์ปดํฌ๋„ŒํŠธ

์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ์— ์•ž์„œ ๊ฐœ๋…์„ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•ด๋ณด์ž. ์ด์ „์— ์šฐ๋ฆฌ๋Š” html๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

<html>
  <body>
    <header>
      <h1>WEB></h1>
      world wide web!
    </header>
    
    <nav>
      <ul>
        <li><a href="1.html">HTML</a></li>
      </ul>
    </nav>
   
  </body>
</html>

ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ์ € header๋ถ€๋ถ„์˜ ์ฝ”๋“œ๊ฐ€ 1000๋งŒ ์ค„์ด๋ผ๋ฉด? ์ €๊ฑธ ๋‹ค index.html ํŒŒ์ผ์— ๋„ฃ์–ด๋ฒ„๋ฆฌ๋ฉด ๋‚œ์žกํ•˜๊ณ  ๋ณด๊ธฐ ์–ด๋ ค์›Œ ์ง€๊ฒ ์ง€? ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์„ ์ผ์ข…์˜ ์น˜ํ™˜์„ ํ•ด์ค€๋‹ค. <header>~</header>๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์˜ˆ๋ฅผ ๋“ค๋ฉด <Subject></Subject> ํƒœ๊ทธ ํ•œ ์ค„๋กœ ์น˜ํ™˜์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

App.js ํŒŒ์ผ์„ ์—ด์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด class ๋ฅผ ์„ ์–ธํ•ด์ค€๋‹ค.

 

class Subject extends Component{
  render(){
    return (
      <header>
        <h1>Web</h1>
        world wide web!
      </header>
    );
  }
}

 

 

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์— ์žˆ๋Š” App class ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ”์ฃผ๋ฉด!

 

class App extends Component {
  render(){
    return (
      <div className="App">
        <Subject></Subject>
      </div>
    );
  }
}

 

npm start๋ฅผ ํ†ตํ•ด localhost:3000์„ ์—ด์–ด ํ™•์ธํ•ด๋ณด์ž!

 

F12๋ฅผ ๋ˆŒ๋Ÿฌ ๊ฐœ๋ฐœ์ž์ฐฝ์œผ๋กœ ํ™•์ธํ•ด๋ด๋„ ์•„์ฃผ ์ž˜ ์ ์šฉ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜๊ฐ€ ์žˆ๋‹น

 

 

*์ฐธ๊ณ ๋กœ ์œ„ ์–ธ์–ด๋Š” javascript๊ฐ€ ์•„๋‹ˆ๋‹ค. ํƒœ๊ทธ๋ฅผ ๊ทธ๋Œ€๋กœ ์“ฐ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ! ์ด ์–ธ์–ด๋ฅผ jsx๋ผ๊ณ  ๋งํ•œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ jsx๋กœ ์ฝ”๋”ฉ์„ ํ•˜๋ฉด ์ด create-react-app์ด ์•Œ์•„์„œ javascript๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. 

 

 

 

์ž, ์ด๋ ‡๊ฒŒ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ํ•œ ๋ฐœ์ง ๋” ๋‚˜์•„๊ฐ€ 

 <Subject title="WEB" sub="world wide web!"></Subject>

์ด๋Ÿฐ์‹์œผ๋กœ ์ง€์ •ํ•ด์„œ Subject๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณด๋‹ค ๋งŽ์€ ์ƒํ™ฉ์—์„œ ๋‹ค์–‘ํ•˜๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ๊ฒŒ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์ € ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ…์ŠคํŠธ๋ผ๋„ ๊ฐ™์€ ์„œ์‹์œผ๋กœ ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

class Subject extends Component{
  render(){
    return (
      <header>
        <h1>{this.props.title}</h1>
        {this.props.sub}
      </header>
    );
  }
}

class App extends Component {
  render(){
    return (
      <div className="App">
        <Subject title="WEB" sub="world wide web!"></Subject>
      </div>
    );
  }
}

 

์ด๋ ‡๊ฒŒ Subject ํƒœ๊ทธ ์•ˆ์— ํ…์ŠคํŠธ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ์— {this.props.'์ด๋ฆ„'} ์„ ์ง€์ •ํ•ด์ฃผ๋ฉด, ์•ž์—์„œ ๋งํ•œ ๋ฐฉ์‹์˜ ์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค!