React Boilerplate & JSX๐Ÿ’œ

alert("april");ยท2023๋…„ 8์›” 12์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
2/17
post-thumbnail
post-custom-banner

์ถœ์ฒ˜ https://github.com/OpenJSX/logo

๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ

๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ฆฌ์•กํŠธ ์‹œ์ž‘ ํŒŒ์ผ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š”
ํ”„๋กœ์ ํŠธ ํด๋”

node_modules ํด๋”

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐ์— ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์ฝ”๋“œ๋ชจ์Œ)๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํด๋”
๋งŒ์•ฝ node_modules ๊ฐ€ ์—†์œผ๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ์ฝ”๋“œ ํ•ด์„ ๋ชปํ•จ

public ํด๋”

์ด๋ฏธ์ง€, ์˜์ƒ ๋“ฑ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ์•„๋†“๋Š” ํด๋” 
favicon.ico
  ํƒญ๋ถ€๋ถ„์— ํ‘œํ˜„๋˜๋Š” ์•„์ด์ฝ˜
index.html 
  body ํƒœ๊ทธ ์•ˆ์ชฝ์— ์˜ค๋กœ์ง€ 
  id๊ฐ€ root์ธ ๋น„์–ด์žˆ๋Š” div ํ•˜๋‚˜๋งŒ ๊ฐ–๊ณ  ์žˆ๋Š” html ํŒŒ์ผ
  htmlํŒŒ์ผ์€ index.html ํŒŒ์ผ ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผ ํ•œ๋‹ค
    <div id="root"></div> 
  ์•ˆ์ชฝ์— ๋‚ด์šฉ๋ฌผ์€ ๋ˆ„๊ฐ€ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ธ๊ฐ€? index.js๊ฐ€

src ํด๋”

index.js 
  index.html์˜ root div์˜ ์ž์‹์œผ๋กœ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค

App.test.js 
  App.js์— ๋งŒ๋“ค์–ด๋†“์€ ์ฝ”๋“œ๊ฐ€ ๋ฒ„๊ทธ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํŒŒ์ผ
  ์ดˆ๊ธฐ๋‹จ๊ณ„์—๋Š” ํ•„์š”์—†์œผ๋‹ˆ ์‚ญ์ œ(ํ…Œ์ŠคํŠธํ• ๋•Œ ๋‹ค์‹œ๋งŒ๋“ค๋ฉด ๋จ)

.gitignore ํŒŒ์ผ

๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ผ๊ฐ€๋ฉด ์•ˆ๋˜๋Š” ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ๋ช…์‹œํ•˜๋Š” ํŒŒ์ผ,
.gitignoreํŒŒ์ผ์—์žˆ๋Š” ํด๋”๋‚˜ ํŒŒ์ผ์€ ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๋Š”๋‹ค

package-lock.json ํŒŒ์ผ

์„ค์น˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „์„ ์ž ๊ธˆ(์œ ์ง€)ํ•˜๋Š” ํŒŒ์ผ
์ˆ˜์ • XX

package.json ํŒŒ์ผ

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ž์ฒด์˜ ์„ค์ • ํŒŒ์ผ
์ด ํ”„๋กœ์ ํŠธ์˜ ๋ฒ„์ „, ๋งŒ๋“  ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ์ •๋ณด,
์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ... ๋‹ค์–‘ํ•œ ์ •๋ณด๋“ค์ด ๋“ค์–ด์žˆ๋‹ค

README.md ํŒŒ์ผ

์ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์„ค๋ช…

๋ฆฌ์•กํŠธ ๋™์ž‘์›๋ฆฌ

html ํŒŒ์ผ์ด ์˜ค๋กœ์ง€ ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•œ๋‹ค
๋ฆฌ์•กํŠธ๋กœ ๋งŒ๋“  ์›น์‚ฌ์ดํŠธ๋Š” ํŽ˜์ด์ง€๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค
(Facebook, Instagram, ...)
SPA(Single Page Application)

SPA vs MPA(Multi Page Application)

SPA๋Š” ํ•œ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ๋งŒ ๋งŒ๋“ค์–ด์ ธ์žˆ๋Š” ์›น ํ˜น์€ ์•ฑ์„ ์˜๋ฏธํ•œ๋‹ค
MPA๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŽ˜์ด์ง€(htmlํŒŒ์ผ์ด ์—ฌ๋Ÿฌ๊ฐœ)๋กœ ๋งŒ๋“ค์–ด์ ธ์žˆ๋Š” ์›น ํ˜น์€ ์•ฑ์„ ์˜๋ฏธํ•œ๋‹ค

๊ธฐ์กด html css ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™œ์šฉํ•˜์—ฌ ๋งŒ๋“  ํŽ˜์ด์ง€

mpa(htmlํŒŒ์ผ์ด ์—ฌ๋Ÿฌ๊ฐœ)

๋กœ๊ทธ์ธ.html     -->     ๋กœ๊ทธ์ธ์—๋Œ€ํ•œ ๊ทธ๋ฆผ ๋„ํ™”์ง€์— ๊ทธ๋ ค๋„ฃ๊ธฐ
ํšŒ์›๊ฐ€์ž….html   -->     ํšŒ์›๊ฐ€์ž…์— ๋Œ€ํ•œ ๊ทธ๋ฆผ์„ ๋„ํ™”์ง€์— ๊ทธ๋ ค๋„ฃ๊ธฐ
๋ฉ”์ธํ™”๋ฉด.html   -->     ๋ฉ”์ธํ™”๋ฉด ๊ทธ๋ฆผ์„ ๋„ํ™”์ง€์— ๊ทธ๋ ค๋„ฃ๊ธฐ
....

์ฃผ์†Œ
www.naver.com   -->     ๋ฉ”์ธํ™”๋ฉด ๊ทธ๋ฆผ๋ณด์—ฌ์ฃผ๊ธฐ
www.naver.com/login     -->     ๋กœ๊ทธ์ธ์—๋Œ€ํ•œ ๊ทธ๋ฆผ๋ณด์—ฌ์ฃผ๊ธฐ
www.naver.com/join      -->     ๋ฉ”์ธํ™”๋ฉด ๊ทธ๋ฆผ๋ณด์—ฌ์ฃผ๊ธฐ


์›๋ž˜๋Š” ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด ์ฐพ๊ธฐ ๋ง‰๋…ธ๋™์„ ํ–ˆ์—ˆ๋‹คใ… ใ… 

SPA(html ํŒŒ์ผ์ด ํ•˜๋‚˜)

๋„ํ™”์ง€(ํ™”์ดํŠธ๋ณด๋“œ) ํ•œ๊ฐœ

๋ฉ”์ธํŽ˜์ด์ง€ ๋ณด์—ฌ์ค˜   -->     ํ™”์ดํŠธ๋ณด๋“œ์— ๋ฉ”์ธํŽ˜์ด์ง€ ๊ทธ๋ ค์„œ ๋ณด์—ฌ์ฃผ๊ธฐ
๋‚ดํ”„๋กœํ•„ํŽ˜์ด์ง€ ๋ณด์—ฌ์ค˜   -->     ํ™”์ดํŠธ๋ณด๋“œ์— ๊ทธ๋ ค์ ธ์žˆ๋˜ ๋ฉ”์ธํŽ˜์ด์ง€๋ฅผ ์ง€์šฐ๊ณ , ํ”„๋กœํ•„ํŽ˜์ด์ง€๋ฅผ ๊ทธ๋ ค์„œ ๋ณด์—ฌ์ฃผ๊ธฐ

react ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” index.html์—์„œ
root div๋ฅผ ์ฐพ์•„์˜จ ๋‹ค์Œ์— ๊ทธ ์†์—๋‹ค๊ฐ€
๊ทธ๋ ค์ฃผ๋Š” ํ–‰์œ„๋ฅผ ํ•˜๋Š” ํŒŒ์ผ : index.js

๋ฆฌ์•กํŠธ(๋ฌธ์ œ๋Š” ์†๋„๋‹ค)

์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๋ฉด
๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„๋งŒ ์ง€์› ๋‹ค๊ฐ€ ๊ทธ๋ ค์ฃผ๋ฉด ๋˜์ง€ ์•Š์Œ?

๋ฌผ๋ฆฌ์  DOM๊ณผ ๋™์ผํ•œ ๊ฐ€์ƒ์˜ DOM์„ ๋งŒ๋“ค๊ณ ,
๋ณ€ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด
๋ณ€ํ•˜๊ธฐ ์ „์˜ ๊ฐ€์ƒ DOM ๊ตฌ์กฐ์™€
๋ณ€ํ•œ ํ›„์˜ ๊ฐ€์ƒ DOM ๊ตฌ์กฐ๋ฅผ ๋น„๊ตํ•˜์—ฌ
๋ณ€ํ•œ ๋ถ€๋ถ„๋งŒ
๋ฌผ๋ฆฌ์  DOM์— ๋ฐ˜์˜ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์งœ๋†“์•„์„œ
์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค

index.js์•ˆ์—์žˆ๋Š”
ReactDOM.createRoot(๋ฌผ๋ฆฌ์ ์ธDOMํƒœ๊ทธ)
--> ๋ฌผ๋ฆฌ์ DOMํƒœ๊ทธ๋ฅผ ๋ฃจํŠธ(๋ฟŒ๋ฆฌ)๋กœ ํ•˜๋Š”
๊ฐ€์ƒ์˜ DOM ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด์ค˜

render(ํƒœ๊ทธ)
--> ๊ฐ€์ƒ DOM ํƒœ๊ทธ ์•ˆ์— ์ž์‹์œผ๋กœ ํŠน์ • ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค˜

*17๋ฒ„์ „์€ render ํ•จ์ˆ˜ ์•ˆ์“ฐ๊ณ  hydrate ํ•จ์ˆ˜๋ฅผ ์“ด๋‹ค(๋…ผ๋ฆฌ๋Š” ๋˜‘๊ฐ™์ง€๋งŒ...)
๊ทธ๋ž˜์„œ ํšŒ์‚ฌ์—์„œ๋Š” 16๋ฒ„์ „์ด๋‚˜ 18๋ฒ„์ „์„ ์“ด๋‹ค

Document Object Model

๋ชจ๋“  ํƒœ๊ทธ๋“ค์€ ๊ฐ์ฒด์ด๋‹ค

jsx(javascript xml)

XML(eXtensible Markup Language)

Markup Language : <>๋กœ ์ด๋ฃจ์–ด์ง„ ์–ธ์–ด

์ •๋ณด์ „๋‹ฌ
์‚ฌ๋žŒ์ด์žˆ๋Š”๋ฐ, ์ด๋ฆ„์€ April์ด๊ณ 
๋‚˜์ด๋Š” 3์‚ด์ด๊ณ  ํ•™๊ต๋Š” ๋‹ค๋žŒ์ฅ์–ด๋ฆฐ์ด์ง‘
์‚ฌ๋žŒ์ด์žˆ๋Š”๋ฐ, ์ด๋ฆ„์€ Kyle์ด๊ณ 
๋‚˜์ด๋Š” 7์‚ด์ด๊ณ  ํ•™๊ต๋Š” ๋‹ค๋žŒ์ฅ์ดˆ๋“ฑํ•™๊ต
์‚ฌ๋žŒ์ด์žˆ๋Š”๋ฐ, ์ด๋ฆ„์€ Jay์ด๊ณ 
๋‚˜์ด๋Š” 4์‚ด์ด๊ณ  ํ•™๊ต๋Š” ๋‹ค๋žŒ์ฅ์œ ์น˜์›

๊ณผ๊ฑฐ
16์‚ฌ๋žŒApril15๋‹ค๋žŒ์ฅ์–ด๋ฆฐ์ด์ง‘13์‚ฌ๋žŒKyle๋‹ค๋žŒ์ฅ์ดˆ๋“ฑํ•™๊ต
์•„์ง๋„ ๊ธˆ์œต๊ถŒ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์“ด๋‹ค...์†๋„๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—ใ…‹
16์ž๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ์ •๋ณด ๋ฉ์–ด๋ฆฌ์•ผ
์ •๋ณด๋ฅผ ๋ถ„๋ฆฌ๋ฅผ ์‹œ์ผœ์•ผํ•˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์ž๋ฅด์ง€?
spec ๋ฌธ์„œ - ์ด๋ ‡๊ฒŒ ๋ถ„๋ฆฌ๋ฅผ ํ•ด๋†“์€ ๋ฌธ์„œ
meta ์ •๋ณด(๊ฐ’์— ๋Œ€ํ•œ ์„ค๋ช…์€ ํšŒ์‚ฌ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค)

xml
<์‚ฌ๋žŒ ์ด๋ฆ„="April" ๋‚˜์ด="3" ํ•™๊ต="๋‹ค๋žŒ์ฅ์–ด๋ฆฐ์ด์ง‘">
<์‚ฌ๋žŒ ์ด๋ฆ„="Kyle" ๋‚˜์ด="7" ํ•™๊ต="๋‹ค๋žŒ์ฅ์ดˆ๋“ฑํ•™๊ต">
<์‚ฌ๋žŒ ์ด๋ฆ„="Jay" ๋‚˜์ด="4" ํ•™๊ต="๋‹ค๋žŒ์ฅ์œ ์น˜์›">

jsx ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•œ XML
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ XML์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„

function ์‚ฌ๋žŒ(์ด๋ฆ„, age, ํ•™๊ต){

}

์‚ฌ๋žŒ('April', 3, '๋‹ค๋žŒ์ฅ์–ด๋ฆฐ์ด์ง‘');

์‹ค์งˆ์ ์œผ๋กœ๋Š” ์ด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰์ด ๋œ๋‹ค!
--> <์‚ฌ๋žŒ ์ด๋ฆ„ = "April" age=3 ํ•™๊ต="๋‹ค๋žŒ์ฅ์–ด๋ฆฐ์ด์ง‘">
--> ํŒŒ์ผํ™•์žฅ์ž๋ฅผ .jsx --> ํ˜„์žฌ๋Š” .js๋กœ ์จ๋„ ์•Œ์•„์„œ ํ•ด์„ํ•ด์คŒ
(ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์•„์ง ๊ตฌ๋ถ„ ํ•„์š”)

<React.StrictMode></React.StrictMode>
์—„๊ฒฉ๊ฒ€์‚ฌ๋ชจ๋“œ, ์ตœ์ดˆ๋กœ ๊ทธ๋ฆฐ ํ›„ ๋‹ค์‹œ ์ง€์› ๋‹ค๊ฐ€ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์„
์‹คํ–‰ํ•˜์—ฌ ๋‘๋ฒˆ ๊ทธ๋ ธ์„ ๋•Œ๋„ ์ด์ƒ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„

test ์‹คํ–‰ํ• ๋•Œ

ํ„ฐ๋ฏธ๋„์„ ์ผœ์„œ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰๊ฐ€๋Šฅ
1. cd react/test
2. react-scripts start ์น˜๊ธฐ ๋„ˆ๋ฌด ๊ธธ๊ณ  ์™ธ์šฐ๊ธฐ ํž˜๋“œ๋‹ˆ๊นŒ ๋ณ„๋ช…์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค
3. ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ช…๋ น์–ด๋‹ˆ๊นŒ ํ”„๋กœ์ ํŠธ์˜ ์„ค์ •ํŒŒ์ผ
package.json ์œผ๋กœ ๊ฐ€์„œ
scripts ๋กœ ๊ฐ€์„œ npm start(๋‚ด๊ฐ€ ์ง€์€ ๋ณ„๋ช… ์ค‘์—์„œ start๋ฅผ ์‹คํ–‰์‹œ์ผœ์ค˜)

html ๊ณผ jsx ๋ฌธ๋ฒ•์˜ ์ฐจ์ด์ 

jsx ์ค‘ ๊ธฐ์กด html ํƒœ๊ทธ ์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ์žˆ๋Š”
ํƒœ๊ทธ๋“ค์ด ์žˆ๋‹ค --> ํ•ด์„ํ•  ๋•Œ html ํƒœ๊ทธ์™€ ๋™์ผํ•˜๊ฒŒ ํ•ด์„
๋งŒ๋“ค ๋•Œ ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ์Œ
html์—๋Š” ์—†๋Š” ์†์„ฑ์„ ์จ๋„ ๋œ๋‹ค

html

<h1 onclick="f()" aaa ="April" id="title" class="important">์•ˆ๋…•</h1>
--> html h1ํƒœ๊ทธ ์†์„ฑ์œผ๋กœ๋Š” aaa๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฌด์‹œ๋จ

jsx

class๋กœ ์„ค์ •ํ•˜๊ณ  ์‹ถ์€ ๋Œ€์ƒ์€ className์— ๊ฐ’์„ ๋„˜๊ฒจ์ค˜์•ผํ•œ๋‹ค
*์ด๋ฒคํŠธ ์นด๋ฉœํ‘œ๊ธฐ๋ฒ•(๋Œ€๋ฌธ์ž)์œผ๋กœ ๋ณ€๊ฒฝ, ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•จ์ˆ˜์ž์ฒด๋ฅผ ๋„˜๊ฒจ์ค˜์•ผํ•œ๋‹ค

<h1 onClick=f aaa ="April" id="title" className="important">์•ˆ๋…•</h1>
--> h1(aaa="April", id="title", className="important", children="์•ˆ๋…•");
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— class๋ผ๋Š” ๋ช…๋ น์–ด(ํ‚ค์›Œ๋“œ)๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— className์œผ๋กœ ์“ด๋‹ค
๋‚ด๋ถ€์ ์ธ ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋ฅผ ๊ฑฐ์ณ์„œ
๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์€
<h1 id="title" class="important" onClick="f()">์•ˆ๋…•</h1>
์ด๋Ÿฌํ•œ html ํƒœ๊ทธ๊ฐ์ฒด๊ฐ€ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋˜์–ด์žˆ์Œ

jsx ์ค‘์—์„œ htmlํƒœ๊ทธ์™€ ๋˜‘๊ฐ™์€ ์ด๋ฆ„์ด ์•„๋‹Œ ํƒœ๊ทธ : ์ปดํฌ๋„ŒํŠธ ex.
์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ˜๋“œ์‹œ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค
์ปดํฌ๋„ŒํŠธ๋„ ์–ด์จŒ๋“  jsx์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค
(๊ณผ๊ฑฐ์—๋Š” ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์—ˆ์Œ --> ๊ถŒ์žฅX --> ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค๊ฒŒ ๋ฐœ์ „)

  1. return ๋  ๋•Œ ํ•œ ๊ฐœ๋งŒ return ๋˜์–ด์•ผ ํ•œ๋‹ค(๋ฌถ์—ฌ์„œ)
    ๋ณดํ†ต์€ div๋กœ ๋ฌถ์–ด์„œ return์„ ํ•˜๋Š”๋ฐ,
    ์ด div๊ฐ€ ์ •๋ง ์˜๋ฏธ์—†์ด ๋ฌถ์–ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ถˆํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
    ๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋Š” fragment <> </> ๋น„์–ด์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌถ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค

  2. ๋‚ด์šฉ์ด ์—†๋Š” jsx๋Š” ์–ด๋–ป๊ฒŒ ํ‘œ๊ธฐ?

	html        -->        jsx
    <img>              <img />
    <input>            <input />
    <p>์•ˆ๋…•</p>        <p>์•ˆ๋…•</p>
                        <April>์•ˆ๋…•</April>
    <p></p>             <p /> or <p></p>
                        <April />  
  1. jsx๋กœ ํ•ด์„ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์™€ js๋กœ ํ•ด์„ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ• ๊นŒ?
    <>์˜ ์‹œ์ž‘๊ณผ ๋์„ ๊ธฐ์ค€์œผ๋กœ jsx๋กœ ํ•ด์„, ๊ทธ์™ธ๋Š” javascript๋กœ ํ•ด์„,
    jsx ์•ˆ์ชฝ์—์„œ javascript ๋ช…๋ น์–ด๋กœ ํ•ด์„ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ??
    {} ๋ฅผ ํ†ตํ•ด ์•Œ๋ ค์ค€๋‹ค
    {} ์•ˆ์ชฝ์€ js๋กœ ํ•ด์„,
    ์ฃผ์„๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์˜ ์˜๋ฏธ๋กœ
    {/์ฃผ์„/}
    ํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ•ด์„ ๋˜์–ด๋„ ์ฃผ์„์ด๋‹ˆ ์ฃผ์„์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค
function a(){
    return "April";
}

a();

function April(){
    return(
        <div>a()</div>
    );
}

d01MyComponent.js

import logo from './logo.svg';
import './App.css';
import April from './day01/d01MyComponent';

function App() {
  return (<April></April>);
}

export default App;

๋‹ค์Œ์‹œ๊ฐ„
export์™€ export default ์ฐจ์ด์ ์ด

css ์ ์šฉ๋ฐฉ๋ฒ•?

profile
Slowly but surely
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€