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

[React] Component

by mtm1018 2025. 3. 20.

๐Ÿงฉ ์ปดํฌ๋„ŒํŠธ

์ปดํฌ๋„ŒํŠธ๋Š” UI๋ฅผ ๊ฐœ๋ณ„์ ์ธ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ๊ณ  ๊ด€๋ฆฌ ๋ฐ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์šฉ์ดํ•œ ๋ฆฌ์•กํŠธ์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.


๐Ÿญ Class๋กœ ๋งŒ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ

์˜ˆ์ „์—๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๋•Œ class๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ ๋•Œ๋ฌธ์— function์œผ๋กœ ๋งŒ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ์™€ ๋‹ฌ๋ฆฌ

 

class๋กœ ๋งŒ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ๋งŒ์˜ ๋ช‡๊ฐ€์ง€ ํŠน์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํ•ญ์ƒ React.Component๋ฅผ ์ƒ์†๋ฐ›์•„ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.
  2. consturctor๋Š” props๋ฅผ ์ „๋‹ฌํ• ๋•Œ๋งŒ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. render์™€ state๊ฐ™์€ ๋ฉ”์„œ๋“œ๋‚˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์†๋˜์–ด ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.
class Welcome extends React.Component{
    constructor(props){
        super(props)
    }

render (){
return <div>`Hi! ${name}`<div>
}
}

๐ŸŽฉ function์œผ๋กœ ๋งŒ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ

๋ฆฌ์•กํŠธ๊ฐ€ ๋ฐœ์ „ํ•ด์˜ค๋ฉด์„œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ๋“ฑ์žฅ์œผ๋กœ class์˜ ๋‹จ์ ๋“ค์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ˜„์žฌ ๋ฆฌ์•กํŠธ 19์—์„œ๋„ ํ•จ์ˆ˜๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜ ์ฝ”๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

function Components(props){
    return(
        ๋ Œ๋”๋งํ•  HTML
    )
}

๐Ÿค ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

์ปดํฌ๋„ŒํŠธ๋Š” ์ผ์ข…์˜ UI ์กฐ๊ฐ์ด๋ผ์„œ ํ•œ ํŽ˜์ด์ง€์—์„œ ๋งŽ์ด ๋งŒ๋“ค์–ด ๋‘๊ณ  ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์˜ ๊ฐ€๋…์„ฑ์ด ์•ˆ์ข‹์•„์ง‘๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“ˆ์‚ฌ์šฉํ•˜๋“ฏ import export๊ตฌ๋ฌธ์„ ํ†ตํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ return๋ฌธ ์•ˆ์ชฝ์—๋Š” ํ•˜๋‚˜์˜ ๋ถ€๋ชจ์•ˆ์—์„œ ํƒœ๊ทธ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค.

 

๋ณดํ†ต ์˜๋ฏธ์—†๋Š” ๋ถ€๋ชจ์š”์†Œ๋ฅผ ๋งŒ๋“ค์–ด์ค„๋•Œ Fragment๋ผ๋Š” ์˜๋ฏธ์—†๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

function Components(){
    return(
        <> // Fragment
          <div> React <div>
        </>
    )
}

export default Components

 

์ปดํฌ๋„ŒํŠธ๋ฅผ ํด๋”์—์„œ exportํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ์“ธ ํŒŒ์ผ์—์„œ import๋ฅผ ํ•ด์˜ต๋‹ˆ๋‹ค.

 

์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ๋Š” <์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„/>์œผ๋กœ ์…€ํ”„ํด๋กœ์ง•ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

 

// App.js
import Components from 'ComponentํŒŒ์ผ ๊ฒฝ๋กœ'
.
.
function App(){
  return(
    <>
      <Components/>
    </>
  )
}

 


๐Ÿฃ Props

Props๋Š” ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์ •๋ณด์ž…๋‹ˆ๋‹ค.

 

props๋Š” ๋ชจ๋“  ๊ฐ’์„ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์ „๋‹ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ปดํฌ๋„ŒํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ•˜์œ„์ปดํฌ๋„ŒํŠธ์˜ ํƒœ๊ทธ์•ˆ์— ์ „๋‹ฌํ•  ์ •๋ณด๋ฅผ ๋„ฃ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

<Components id={id} name={name]/>

 

๋ณดํ†ต ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ „๋‹ฌํ• ๋•Œ ์ „๋‹ฌํ•˜๋Š” ๋‚ด์šฉ๊ณผ ์ค‘๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์„ ์ผ์น˜์‹œ์ผœ์„œ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.

 

์ „๋‹ฌ ๋ฐ›์€ ์ปดํฌ๋„ŒํŠธ๋Š” props๋ผ๋Š” ์ด๋ฆ„์„ ํ†ตํ•ด์„œ ์ „๋‹ฌ๋ฐ›์Šต๋‹ˆ๋‹ค.

 

// Component

export default function Component(props){
  return(
    <div key={props.id}>
       <h2>{props.name}</h2>
    </div>
  )
}

 

๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์šฉํ•˜๊ณ ๋ณด๋‹ˆ ์ต์ˆ™ํ•œ ๋ชจ์–‘์ƒˆ๋„ค์š”

 

Props๋Š” ๋ฆฌ์•กํŠธ๊ฐ€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— props๊ฐ€ ๋งŽ์•„์„œ ์ผ์ผํžˆ props.name๊ฐ™์€๊ฑฐ ํ•˜๊ธฐ ๊ท€์ฐฎ์œผ๋ฉด ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

// Component

export default function Component({id,name}){
  return(
    <div key={id}>
       <h2>{name}</h2>
    </div>
  )
}

'React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React] ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ  (0) 2025.04.04
[React] State  (0) 2025.04.04
[React] ๊ธฐ๋ณธ๋ฌธ๋ฒ• - 2  (0) 2025.03.19
[React] ๊ธฐ๋ณธ๋ฌธ๋ฒ•  (1) 2025.03.17
[React]๋ฆฌ์•กํŠธ ์‹คํ–‰๋ฐฉ๋ฒ•  (0) 2025.03.17