[React] Component ๋งŒ๋“ค๊ธฐ

2021. 9. 24. 08:00ใ†Front-End ์ž‘์—…์‹ค/Vue.js

728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”? ์ฃผ๋‹ˆํ•˜๋ž‘ ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ์ฃผ๋‹ˆํ•˜๋ž‘์ด React์— ๋ณธ๊ฒฉ์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์ธ ๊ฒƒ์ด์—์š”.

์ฃผ๋‹ˆํ•˜๋ž‘์€ Full-Stack์ด ๋˜๊ณ  ์‹ถ์€ ๊ฒƒ์ด์—์š”!

์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ฃผ๋‹ˆํ•˜๋ž‘์˜ Git์— ๊ด€์‹ฌ์„ ์ฃผ์„ธ์š”!

 

 

 


 

 

๐Ÿ“Œ ์ด๋ก 


 

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฆฌ์—‘ํŠธ๋ผ๋Š” ๊ธฐ์ˆ ์„ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด์—์š”.
component๋ฅผ ํ†ตํ•ด Tag๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ๊ฒƒ์„ html๊ณผ Mappingํ•ด์ฃผ๋ฉด ๋ฆฌ์—‘ํŠธ๊ฐ€ ์•Œ์•„์„œ html์„ ๊ณต๊ธ‰ํ•ด ์ฃผ๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค.

Component (Class ๊ธฐ๋ฐ˜)์—์„œ ์‚ฌ์šฉ ๋˜๋Š” ์–ธ์–ด๋Š” ์œ ์‚ฌ js์ด์ง€ js๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ด์—์š”. ๊ทธ ์•ˆ์— ์‚ฌ์šฉ๋œ Tag๋ฌธ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด์—์š”
.

 

JSX๋Š” Facebook์—์„œ ๋งŒ๋“  ์ปดํ“จํ„ฐ์šฉ ์–ธ์–ด๋กœ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ๋ฒ•์„ ์ž‘์„ฑํ•˜๋ฉด create app์ด ์•Œ์•„์„œ ์ปจ๋ฒ„ํŒ…์„ ํ†ตํ•ด js๋กœ ๋ณ€ํ™˜ ์‹œ์ผœ ์ฃผ๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค.

TOC๋Š” Table Of Content๋กœ ๋ชฉ์ฐจ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ง์ด๋ผ ํ•˜๋„ค์š”!

๋ฆฌ์—‘ํŠธ๋Š” ์—‰๋ง์ง„์ฐฝ์œผ๋กœ ์ญ‰ ์ผ๋˜ html์„ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌ ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ธ ๊ฒƒ์ด์—์š”. ์ปดํฌ๋„ŒํŠธ์—๋งŒ ์ง‘์ค‘ํ•˜๊ฒŒ ํ•˜์—ฌ ๋ณต์žก๋„๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ๋‚ฎ์ถ”์–ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

๐Ÿ“Œ ์ฝ”๋“œ


  ๐Ÿ“App.js

 

import React, { Component } from 'react';
import './App.css';

class Subject extends Component { // ๋‚˜๋Š” Subject(์ฒซ๊ธ€์ž ๋Œ€๋ฌธ์ž)๋ผ๋Š” Component๋กœ ๋งŒ๋“ค๊ฒ ๋‹ค.
    render() { // ๋ฐ˜๋“œ์‹œ renderํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ Class์•ˆ์— ์žˆ๋Š” ํ•จ์ˆ˜(Method)๋Š” function์„ ์ƒ๋žตํ•œ๋‹ค.
        return (
            // Component๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ Tag๋งŒ (๋”ฑ ํ•˜๋‚˜) ์จ์•ผ ํ•œ๋‹ค.
            <header>
                <h1>Web</h1>
                World Wide Web!
            </header>
        );
    } // render() ๋

} // Subject Component ๋

class Content extends Component {
    render() {
        return(
            <article>
                <h2>HTML</h2>
                HTML is HyperText Markup Language.
            </article>
        );
    }
}

class Nav extends Component {
    render() {
        return (
            <nav>
                <ul>
                    <li><a href="1.html">HTML</a> </li>
                    <li><a href="2.html">CSS</a> </li>
                    <li><a href="3.html">JavaScript</a> </li>
                </ul>
            </nav>
        );
    }
}

class App extends Component { // App Class
  render() {
        return (
            <div className="App">
                <Subject title={this.state.subject.title} sub={this.state.subject.sub}></Subject>
                <Nav></Nav>
                <Content title="HTML" desc="HTML is HyperText Markup Language."></Content>
            </div>
        );
    }
}

 

        ๐Ÿ‘‰ ๊ฒฐ๊ณผ

 

๋ฐ˜์‘ํ˜•

 

 

 


 

 

์ฃผ๋‹ˆํ•˜๋ž‘์˜ ๊ธ€์ด ๋งˆ์Œ์— ๋“œ์…จ๋‚˜์š”? ๊ตฌ๋…๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋Œ“๊ธ€ ๊ทธ๋ฆฌ๊ณ  ๋ฐฉ๋ช…๋ก์€ ์ฃผ๋‹ˆํ•˜๋ž‘์—๊ฒŒ ๋งŽ์€ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค

728x90
๋ฐ˜์‘ํ˜•

'Front-End ์ž‘์—…์‹ค > Vue.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React] State์™€ Props์˜ ์ฐจ์ด  (0) 2021.10.02
[React] State  (0) 2021.09.27
[React] Component File ๋ถ„๋ฆฌ  (0) 2021.09.26
[React] Props  (0) 2021.09.25
[React] ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” React  (0) 2021.09.16