[React] ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” React

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

728x90
๋ฐ˜์‘ํ˜•

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

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

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

 

 




๐Ÿ“Œ Reate ๊ฐœ๋… (์ฑ… ์ถ”์ฒœ: ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive)


  ๐Ÿ“Reate ํƒ„์ƒ ์ด์œ 

 

๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ด์œ  ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

  1. Component - Props, State
  2. HOOK
  3. Axios
  4. Router - Tamplate ์ด์šฉ
  5. Redux - thunk / saga ---> Redux Toolkit

 

 

  ๐Ÿ“Reate์˜ ์‹œ์ž‘

JSTL์€ 2015๋…„ ๋ถ€ํ„ฐ Update๊ฐ€ ๋˜์ง€ ์•Š์•„ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

  • SSR (Server Side Render) : ์„œ๋ฒ„์—์„œ ํ•„์š”ํ•œ ๊ฒƒ์„ ๋‹ค ๋งŒ๋“ค์–ด ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•
    SSR -> JSP -> JAVA -> Compile -> Output State
  • SEO (Search Engine Optimizer) 
  • Web Page ์ค‘์‹ฌ๊ณผ Web Application
  • HTML์˜ ์ž…์žฅ ๋ณ€ํ™˜
  • JS์˜ ์ž…์žฅ ๋ณ€ํ™”
  • ๋‹จ์ผ Todo List

Browser๋Š” HTML์„ ๋งŒ๋‚˜๋ฉด HTML์„ Memory์— Tree ๊ตฌ์กฐ๋กœ ๋„ฃ๋Š” ๊ฒƒ์ด์—์š”. ์ด๊ฒƒ์„ DOM Tree(HTML๊ณผ 1:1๋กœ ๋งค์นญ)๋ผ๊ณ  ํ•˜๊ณ , JS์—์„œ๋Š” DOM ํ•ธ๋“ค๋ง์ด๋ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”. CSS๋Š” ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๋งŒ Tree ๊ตฌ์กฐ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—์š”. (๋žœ๋”๋ง ํŠธ๋ฆฌ)

 

  ๐Ÿ“Component๋ž€?

์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ Tag๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด์—์š”. Component๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

  • ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์žฌ ์‚ฌ์šฉ์„ฑ์ด ์ข‹์•„์ง„๋‹ค.
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ์ข‹์•„์ง„๋‹ค.
  • html Code๋ฅผ ํ•œ ํŽ˜์ด์ง€์— ์ž‘์„ฑํ•˜๊ณ , ๊ทธ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•  ๊ณณ์—์„œ Tag๋งŒ ์ ์–ด์ฃผ๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

 

  ๐Ÿ“์ตœ์ดˆ ์„ค์ •

react๋ฅผ ์„ค์น˜ํ•  ๋•Œ, npx์™€ npm์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

  • npx : ์ž„์‹œ ์„ค์น˜ ๋’ค ๋ฐ”๋กœ ์‚ญ์ œ
  • npm : ์˜๊ตฌ ์„ค์น˜

 

 

  ๐Ÿ“Reate์˜ ์ด๋ชจ์ €๋ชจ

 

์ตœ์ดˆ ๋ฆฌ์—‘ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด index.js(์ตœ์ดˆ ์ ‘๊ทผ์ )์— document.getElementById('root')๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ index.html์— 31๋ฒˆ์งธ ์ค„์— <div> Tag์•ˆ์— id์ด๋ฆ„์ด๊ณ , Mapping์ด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

๋‹ค์‹œ index.js์— import ๋ถ€๋ถ„์— App from ./App์ด ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ App.js๋ฅผ importํ•˜์—ฌ <div className="APP">์ด ๋๋‚  ๋•Œ ๊นŒ์ง€ ๊ทธ ์•ˆ์— ๋ชจ๋“  ๋‚ด์šฉ์„ import ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด์—์š”. index.js 7 ~ 9๋ฒˆ์งธ ์ค„์— <App />์„ ํ†ตํ•ด App.js์˜ ๋‚ด์šฉ์„ ๊ฒฐ๊ตญ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด์ง€์š”.

 

๋˜ํ•œ, css File์„ ์ˆ˜์ •ํ•  ๋•Œ๋Š” index.js์— import๋œ index.css๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

JS๊ฐ€ ๋ฌธ์ž์—ด์„ Browser์— ๋ณด๋‚ด์ฃผ๋ฉด ์ตœ์ดˆ Browser๋Š” ํ•œ๋ฒˆ ์ฝ๋Š”๋ฐ, '~~๋ฌธ'(์ œ์–ด๋ฌธ ๋“ฑ ํ˜น์€ ์„ ์–ธ๋ฌธ (๋ณ€์ˆ˜ ๋“ฑ))์„ ๋จผ์ € ์ฐพ๊ณ , ๋‘๋ฒˆ์งธ ์ฝ์„ ๋•Œ๋Š” '~~์‹'์„ ์ฐพ๋Š” ๊ฒƒ์ด์—์š”.

 

๋งŒ์•ฝ ์ฝ”๋”ฉ์„ ํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ฒฝ๊ณ ๋กœ Undifind๋ผ๊ณ  ๋‚˜์˜ค๋ฉด ๋ณ€์ˆ˜๋Š” ์žˆ๋Š”๋ฐ, ๊ฐ’์ด ์—†์„ ๋•Œ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด์—์š”. JS๋Š” ํ•จ์ˆ˜๋„ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•œ๋‹ต๋‹ˆ๋‹ค!

 

Not Difind๋Š” ๋ณ€์ˆ˜ ์กฐ์ฐจ ์ฐพ์„ ์ˆ˜ ์—†์„ ๋•Œ ๋œจ๋Š” Error์—์š”.

 

JS ํ˜ธ์ด์ŠคํŒ…์ด๋ž€? ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋  ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ํ•จ์ˆ˜ ๋ณด๋‹ค ์•„๋ž˜์—์„œ ๊ฐ’์ด ๋‹ด๊ธฐ๋Š” ํ˜„์ƒ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด์—์š”.

JS ํด๋กœ์ ธ๋ž€? ํ•จ์ˆ˜์™€ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์–ดํœ˜์ (Lexical) ํ™˜๊ฒฝ์˜ ์กฐํ•ฉ์ธ ๊ฒƒ์ด์—์š”.

์ด ๋ง์ด ๋ฌด์—‡์ด๋ƒ๋ฉด?

function outerFunc() {
	var x = 10;
    var innerFunc = function() {
    	console.log(x);
    }
    
    innerFunc();
 }
 
 outerFunc(); // 10

 

์œ„์˜ ์ฝ”๋“œ์—์„œ outerFunc ๋‚ด์—์„œ ๋‚ด๋ถ€ ํ•จ์ˆ˜ innerFunc๊ฐ€ ์„ ์–ธ๋˜๊ณ  ํ˜ธ์ถœ์ด ๋œ ๊ฒƒ์ด์—์š”. ์ด ๋•Œ ๋‚ด๋ถ€ ํ•จ์ˆ˜ innerFunc๋Š” ์ž์‹ ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์™ธ๋ถ€ ํ•จ์ˆ˜ outerFunc์˜ ๋ณ€์ˆ˜ x์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜ innerFunc๊ฐ€ ํ•จ์ˆ˜ outerFunc์˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

 

๐Ÿ’ก์ฐธ๊ณ  :
 ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์— ์„ ์–ธํ•˜์˜€๋Š”์ง€์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค. ์ด๋ฅผ Lexical scoping (๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘)์ด๋ผ ํ•œ๋‹ค. ์œ„ ์˜ˆ์ œ์˜ ํ•จ์ˆ˜ innerFunc๋Š” ํ•จ์ˆ˜ outerFunc์˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ innerFunc์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜ outerFunc์ด๋‹ค. ํ•จ์ˆ˜ innerFunc๊ฐ€ ์ „์—ญ์— ์„ ์–ธ๋˜์—ˆ๋‹ค๋ฉด ํ•จ์ˆ˜ innerFunc์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ์ „์—ญ ์Šค์ฝ”ํ”„๊ฐ€ ๋œ๋‹ค.

 

ํด๋กœ์ €๋Š” ์ž์‹ ์ด ์ƒ์„ฑ๋  ๋•Œ ํ™˜๊ฒฝ(Lexical enviroment)์„ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ Memory ์ฐจ์›์—์„œ ์†ํ•ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”. ํ•˜์ง€๋งŒ ํด๋กœ์ €๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ์ด๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ต๋‹ˆ๋‹ค!

 

๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ! ์ƒํƒœ ์œ ์ง€!

ํด๋กœ์ €๊ฐ€ ๊ฐ€์žฅ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ์ƒํ™ฉ์€ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ , ๋ณ€๊ฒฝ๋œ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

  ๐Ÿ“ํ•จ์ˆ˜ ์ด์•ผ๊ธฐ

console.log(doA)
console.log(doA())

function doA() { // ํ•จ์ˆ˜์˜ ์„ ์–ธ๋ฌธ
	return 10
}

 

์ฐธ๊ณ ๋กœ ํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜๋กœ ๋ด์•ผ ํ•ด์š”. ์œ„์˜ ์˜ˆ์ œ์—์„œ doA๋Š” ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ณ€์ˆ˜๋กœ ๋ณด๊ณ , { }๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•ฉ์‹œ๋‹ค!

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด 1๋ฒˆ(console.log(doA))๋Š” ๋ธŒ๋ผ์šฐ์ ธ ์ƒ์—์„œ ํ•จ์ˆ˜ ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๊ฒŒ ๋˜๊ณ , 2๋ฒˆ(console.log(doA())๋Š” 10์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

 

  ๐Ÿ“๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์ด์•ผ๊ธฐ

  • console.log(boj.name)
  • console.log(obj[name])
    ์œ„์™€ ์•„๋ž˜๋Š” ๋‘˜ ๋‹ค ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ธฐ๋Šฅ์— ์ฐจ์ด๊ฐ€ ํฌ๋‹ค
  • var obj = { name : 'AAA', age : 16 }  // ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ํ˜•์‹
  • JSON = ๋ฌธ์ž์—ด์ด๋‹ค.
  • JSON.parse() = JSON ํ˜•์‹์„ JS ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ

 

 

์œ„์˜ ํ•„๊ธฐ ์ž๋ฃŒ์—์„œ ๋ถ€์กฑํ•œ ๋‚ด์šฉ์„ ์•„๋ž˜์— ์ž‘์„ฑํ• ๊ฒŒ์š”!

Props (Properties) : JavaScript์˜ ๊ฐ์ฒด๋กœ ๋žœ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ , ํ•จ์ˆ˜ ๋งค๊ฐœ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ์ด ๋œ๋‹ค.
๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ๊ฐ’์„ ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” props๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ•˜๊ณ , ๋ฐ›์•„์˜จ props๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ์ด๋Ÿฐ ์ด์œ ๋กœ ์œ„ ํ•„๊ธฐ ์ž๋ฃŒ์— ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๊ณ  ์ž‘์„ฑํ•œ ๊ฒƒ

State : JavaScript์˜ ๊ฐ์ฒด๋กœ ๋žœ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ , ํ•จ์ˆ˜ ๋‚ด์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค. ๋˜ํ•œ, ๋‚ด๋ถ€์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

  ๐Ÿ“React Router ์ด์•ผ๊ธฐ

 

๋ฐ˜์‘ํ˜•

 

  ๐Ÿ“Higher Order Component ์ด์•ผ๊ธฐ

 

Higher Order Component - HOC (๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ) ๋ž€? ์ปดํฌ๋„ŒํŠธ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ React์— ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์ธ ๊ฒƒ์ด์—์š”.

HOC์€ React API์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๊ณ , React์˜ ๊ตฌ์„ฑ์  ํŠน์„ฑ์—์„œ ๋‚˜์˜ค๋Š” ํŒจํ„ด์ด๋ž๋‹ˆ๋‹ค.

 

์•„๋ž˜๋Š” HOC๋ฅผ ๊ฐ€์ ธ์™€ ์ƒˆ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ์ธ ๊ฒƒ์ด์—์š”.

const EnhancedComponent = higherOrderComponent(WrappedComponent);

 

์ปดํฌ๋„ŒํŠธ๋Š” props๋ฅผ UI๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ˜๋ฉด HOC๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณ€ํ™˜ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

HOC์€ Redux์˜ connect์™€ Relay์˜ createFragmentContainer์™€ ๊ฐ™์€ 3rd Party React Library์—์„œ ํ”ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

 

 

  ๐Ÿ“Redux ์ด์•ผ๊ธฐ

 

 

 

  ๐Ÿ“๋ฐฐํฌ ์‹œ ์ฐธ๊ณ 

์ตœ์ดˆ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ Browser๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๊ณ ์ž ํ•  ๋•Œ #npm run start ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ์‹คํ–‰ํ•˜๋ฉด Browser์˜ Resource๋ฅผ ์—„์ฒญ ์žก์•„ ๋จน๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—์š”. ๊ทธ๋ž˜์„œ ๋ฐฐํฌ ํ•  ๋•Œ๋Š” #npm run build ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

 

  ๐Ÿ“๋ถ€๋ก

์‹œ๋ฉ˜ํ‹ฑ Tag๋Š” React์™€ ์ „ํ˜€ ๊ด€๊ณ„ ์—†๋Š” HTML 5์˜ Tag๋กœ ๊ทธ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ์‚ฌ๋žŒ๋“ค๋ผ๋ฆฌ ์ด๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๊ตฌ๋ณ„์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—์š”. 

<header></header>๋Š” ์—ฌ๊ธฐ๊ฐ€ ํ—ค๋”๋ถ€์ž„์„ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด๊ณ , <nav></nav>๋Š” ์—ฌ๊ธฐ๊ฐ€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ถ€์ž„์„ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 


 

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

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] Component ๋งŒ๋“ค๊ธฐ  (0) 2021.09.24