๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
WEB/REACT

[React] ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ VS ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

by mingzoo 2020. 12. 29.

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์š”์†Œ๋“ค์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ๋Š” props๋ฅผ ๋ฐ›์•„์„œ elelement๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ!

๊ณผ์—ฐ ๋‘˜์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๊ณ , ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •ํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ์š”?

์ €๋Š” ์ด์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ '๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ ' ์ฑ…๊ณผ ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

(ko.reactjs.org/docs/components-and-props.html#function-and-class-components)

์ œ๊ฐ€ ์ดํ•ดํ•œ ๊ฐœ๋…์„ ์“ฐ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ !

 

โœ”์ฝ”๋“œ๋น„๊ต

//ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ
import React from 'react';
import './App.css';

function App(){
	const name = '๋ฆฌ์•กํŠธ';
    return <div className = "react">{name}</div>
}


const App = () => {
	const name = '๋ฆฌ์•กํŠธ';
    return <div className = "react">{name}</div>
}
export default App;

 

//ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ
import React, {Component} from 'react';

class App extends Component{
	render(){
    	const name = 'react';
        return <div className = "react">{name}</div>
        }
     }
}

export default App;

 

โœ” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

props(์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ) ๊ฐ์ฒด ์ธ์ž๋ฅผ ๋ฐ›์€ ํ›„, react element(์˜ˆ, props.name)๋ฅผ ๋ฐ˜ํ™˜

 

โœ” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ํŠน์ง•

  • ์„ ์–ธํ•˜๊ธฐ ํŽธํ•จ
  • ๋ฉ”๋ชจ๋ฆฌ ์ž์› ์ ๊ฒŒ ์‚ฌ์šฉ
  • ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ํด๋ž˜์Šคํ˜•๊ณผ ๋น„๊ตํ•ด์„œ ๋” ์ ์Œ(๋ณ„ ์ฐจ์ด ์—†์Œ)
  • Hooks ์‚ฌ์šฉ

 

โœ” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ํŠน์ง•

  • render ํ•จ์ˆ˜ ํ•„์ˆ˜
  • state์™€ ๋ผ์ดํ”„์‚ฌ์ดํด API ๊ธฐ๋Šฅ ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • ์ž„์˜ ๋ฉ”์„œ๋“œ ์ •์˜

 

โœ” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” state ์ดˆ๊ธฐ๊ฐ’์„ constructor๋ฉ”์„œ๋“œ์—์„œ ์ƒ์„ฑํ•ด์ค˜์•ผํ•œ๋‹ค. constructor์‚ฌ์šฉํ•  ๋•Œ๋Š” super(props)๋ฅผ ๋ฐ˜๋“œ์‹œ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค. this.state๋กœ ์กฐํšŒํ•˜๋ฉฐ, this.setState๋ฅผ ํ†ตํ•ด์„œ state๊ฐ’์„ ๋ฐ”๊ฟ”์ค€๋‹ค.

constructor๋ฉ”์„œ๋“œ๋ฅผ ์“ฐ๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ๋Š” ํ™”์‚ดํ‘œํ•จ์ˆ˜๋ฅผ ์จ์„œ ์ƒˆ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค constructor๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๋ถ€์ž‘์šฉ์„ ๋ง‰์•„์ค€๋‹ค.

 

๋ฆฌ์•กํŠธ hook์ด ๋‚˜ํƒ€๋‚˜๋ฉด์„œ ํด๋ž˜์Šคํ˜•์˜ state๊ฐ€ ์“ฐ์—ฌ์ง€์ง€ ์•Š๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ ํ›…์€ ๋‹ค์Œ์˜ ํฌ์ŠคํŠธ์—์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

728x90