React | Review

Ssssยท2021๋…„ 2์›” 14์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
5/5
post-thumbnail

๐ŸŒฑ Intro to REACT ๐ŸŒฑ

๐ŸŒฑ React๋ฅผ ์“ฐ๋Š” ์ด์œ 

์›น์˜ ๋ฐœ์ „์œผ๋กœ ์›น์— ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  ํ™”๋ คํ•œ UI๋ฅผ ์ƒ์‚ฐ์„ฑ์žˆ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ

๐ŸŒฑ ๋Œ€ํ‘œ์ ์ธ Frontend Framework(Library)

Angular/Vue/React

๐ŸŒฑ React๋ฅผ ๋ฐฐ์›Œ์•ผํ•˜๋Š” ์ด์œ !

์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์„œ ์ƒํƒœ๊ณ„๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ๊ณ  ํŽ˜์ด์Šค๋ถ์˜ ๊พธ์ค€ํ•œ ๊ด€๋ฆฌ๋กœ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌธ์„œํ™”๊ฐ€ ์ž˜๋˜์–ด์žˆ์–ด์„œ ๋ฐฐ์šฐ๋Š” ์ž…์žฅ์—์„œ ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ• ์ˆ˜์žˆ์Œ

๐ŸŒฑ Virtual DOM

DOM: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ HTML์„ ๊ฐ์ฒดํ™” ์‹œ์ผœ์„œ ์ ‘๊ทผํ• ์ˆ˜์žˆ๋Š” ๋ชจ๋ธ
์‹ค์ œ DOM์„ ๋˜‘๊ฐ™์ด ๋ณต์‚ฌ๋ฅผ ํ•ด์„œ UI๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„๋งŒ ๊ต์ฒดํ•ด์ค€๋‹ค.

๐ŸŒฑ Node.js & npm

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


๐Ÿ’ What is CRA ? ๐Ÿ’

๐Ÿ’ CRA (Create-React-App)

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•ด์ฃผ๋Š” ๋„๊ตฌ
CRA๋Š” ๋ฆฌ์•กํŠธ๋กœ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค
CRA๋ฅผ ์ด์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค
CRA์˜ ์ดˆ๊ธฐํด๋”๋Š” ํฌ๊ฒŒ [node.modules - package.json - .gitignore]์™€ [index.html - index.js - App.js]๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๐Ÿ’ node.modules

CRA๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ํŒจํ‚ค์ง€ ํด๋”

๐Ÿ’ package.json

CRA๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์™ธ ์ถ”๊ฐ€๋กœ ์„ค์น˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/ํŒจํ‚ค์ง€ ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋˜๋Š” ํŒŒ์ผ
dependencies์•ˆ์—๋Š” ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€ ๋ฆฌ์ŠคํŠธ, ๋ฒ„์ „ ํ™•์ธ ๊ฐ€๋Šฅ

โ—๏ธ node.modules & package.json์—์„œ ์ด์ค‘์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ด์œ ?

ํ˜‘์—…์„ ํ• ๋•Œ, ๋‚ด๊ฐ€ ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€๋Š” ๋‚ด ๋กœ์ปฌ์—๋งŒ ์ €์žฅ์ด ๋˜๋Š”๋ฐ github์— ์˜ฌ๋ฆด๋•Œ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์™€ package.json(+์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•œ ์ •๋ณด)์„ ์˜ฌ๋ฆฐ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ทธ๊ฑธ pullํ•ด์„œ npm install์„ ํ•˜๋ฉด package.json์— ๊ธฐ๋ก๋˜์–ด์žˆ๋Š” ๋‚˜์˜ ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์น˜๋œ๋‹ค.

๐Ÿ’ .gitignore

github์— ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์ง€์•Š์€ ํด๋”์™€ ํŒŒ์ผ์„ ์ž‘์„ฑํ• ์ˆ˜์žˆ๋‹ค.
node.modules ๊ฐ™์€ ๊ฒฝ์šฐ ๋ฌด๊ฒ๊ธฐ๋•Œ๋ฌธ์— github์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.


โญ๏ธ Component and JSX โญ๏ธ

โญ๏ธ Component์˜ ์ •์˜์™€ ํŠน์ง•

์ •์˜: ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ UI ๊ตฌ์„ฑ ๋‹จ์œ„
ํŠน์ง•: ์žฌํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜์— ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š”์ง€ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ• ์ˆ˜์žˆ๋‹ค.

โญ๏ธ Class vs. Functional Component

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” render ํ•จ์ˆ˜๊ฐ€ ๊ผญ! ์žˆ์–ด์•ผํ•˜๊ณ  ๊ทธ์•ˆ์— ๋ณด์—ฌ์ค˜์•ผํ•  jsx๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค
ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ณ  ์ž‘์„ฑํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋‹ค. ์›๋ž˜๋Š” state์™€ lifecycle method๊ฐ€ ์—†์—ˆ์œผ๋‚˜ hooks์˜ ๋„์ž…์œผ๋กœ state์™€ lifecycle method๋ฅผ ์“ธ์ˆ˜์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

โญ๏ธ JSX

Javascript Syntax Extension ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™•์žฅ๋ฌธ๋ฒ•
JSX๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ”๋ฒจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค
์žฅ์ : html ํƒœ๊ทธ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฉ” ๋ณด๊ธฐ ์‰ฝ๊ณ  ์ต์ˆ™ํ•˜๋ฉฐ html tag์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ• ์ˆ˜์žˆ๋‹ค

โญ๏ธ JSX ํŠน์ง•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ๋Š” curly bracket์„ ์‚ฌ์šฉํ•œ๋‹ค { }
class ๋Œ€์‹  className์„ ์‚ฌ์šฉํ•œ๋‹ค
inline-styling์„ ํ•  ๊ฒฝ์šฐ์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ฝ”๋“œ + ์Šคํƒ€์ผ๋ง์ด๊ธฐ๋•Œ๋ฌธ์— curly bracket์„ ๋‘๋ฒˆ ์‚ฌ์šฉํ•œ๋‹ค

<div style={{color : "red"}}>Hello React</div>

๋ชจ๋“  ์š”์†Œ๋Š” ์ตœ์ƒ์œ„ ์š”์†Œ์— ๊ฐ์‹ธ์—ฌ ์žˆ๋‹ค. <> ... </>


๐ŸŽ React Router & SASS๐ŸŽ

๐ŸŽ SPA

SPA (Single Page Application)์ด๋ž€ ํŽ˜์ด์ง€๊ฐ€ ํ•œ๊ฐœ์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งํ•œ๋‹ค.
๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ .htmlํŒŒ์ผ์€ ๋‹จ ํ•œ๊ฐœ! ์ฆ‰, Single Page Application์ด๋‹ค.

๐ŸŽ Routing

ํ•œ๊ฐœ์˜ ์›นํŽ˜์ด์ง€์•ˆ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ Routing์ด๋‹ค. ๋ฆฌ์•กํŠธ ์ž์ฒด์—๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— React Router ๊ฐ™์€ third party library๋ฅผ ์ถ”๊ฐ€ ์„ค์น˜ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. (๋ฆฌ์•กํŠธ๊ฐ€ framework๊ฐ€ ์•„๋‹Œ library๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ์ด์œ ๊ฐ€ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์ด ๋‚ด์žฅ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ!)

<Link>๋Š” ํด๋ฆญ์‹œ ๋ฐ”๋กœ ์ด๋™ํ•˜๋Š” ๋กœ์ง ๊ตฌํ˜„์‹œ์— ์‚ฌ์šฉํ•˜๊ณ 
withRouterHOC๋Š” ํŽ˜์ด์ง€ ์ „ํ™˜์‹œ ์ถ”๊ฐ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๋กœ์ง(backend API๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก, user data ์ธ์ฆ/์ธ๊ฐ€ ๋“ฑ๋“ฑ)์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

๐ŸŽ SASS

Syntactically Awesome StyleSheet
CSS Preprocessor, CSS๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ์ „์— ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ CSS์˜ ๋ถˆํŽธํ•จ์„ ์ƒ์‡„์‹œ์ผœ์ฃผ๋Š” CSS ํ™•์žฅ๋ฒ„์ „
์ผ๋‹จ SASS๋กœ ์ž‘์„ฑํ•˜๊ณ  ์›น์—์„œ ๋™์ž‘ ๊ฐ€๋Šฅํ•œ ํ‘œ์ค€์˜ CSS๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.


๐ŸŒˆ State & Event๐ŸŒˆ

๐ŸŒˆ State๋ž€

์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ’
ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ์ปดํฌ๋„ŒํŠธ์˜ UI์ •๋ณด๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
state๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ฉฐ ์–ผ๋งˆ๋“ ์ง€ ๋ฐ์ดํ„ฐ(๊ฐ์ฒด)๊ฐ€ ๋ณ€๊ฒฝ๋ ์ˆ˜ ์žˆ์Œ

๐ŸŒˆ State์—์„œ ์ƒํƒœ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ์ด์œ 

์ปดํฌ๋„ŒํŠธ ์•ˆ์˜ ์š”์†Œ์—์„œ ๊ทธ ์ƒํƒœ๊ฐ’์„ ๋ฐ˜์˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ํšจ์œจ์ ์œผ๋กœ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ

๐ŸŒˆ state๋ฅผ ์—…๋ฐ์ดํŠธ ์‹œ์ผœ์ค„๋•?

setState()๋ฅผ ์ด์šฉํ•ด์„œ state๋ฅผ ์—…๋ฐ์ดํŠธ ์‹œ์ผœ์ค€๋‹ค. ์—…๋ฐ์ดํŠธ ํ• ๋•Œ๋งˆ๋‹ค renderํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค


๐ŸŒธ Props & Event๐ŸŒธ

๐ŸŒธ Props๋ž€

์ปดํฌ๋„ŒํŠธ์˜ ์†์„ฑ๊ฐ’
๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
Props๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ state์˜ ์ƒํƒœ๊ฐ’๊ณผ event handler๋ฅผ ๋„˜๊ฒจ์ค„์ˆ˜์žˆ์Œ

๐ŸŒธ Props๋Š” ๊ฐ์ฒด๋‹ค!

this : ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ
this.props : ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ props ๊ฐ์ฒด
this.props.titleColor : props ๊ฐ์ฒด์˜ ํŠน์ • key(titleColor)๊ฐ’. ์ฆ‰ "red"


๐Ÿท Mock Data๐Ÿท

๐Ÿท Mock Data์˜ ์ •์˜์™€ ํ•„์š”ํ•œ ์ด์œ 

์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ, ์‹ค์ œ API์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ํ”„๋ก ํŠธ์•ค๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”์— ์˜ํ•ด ์ƒ˜ํ”Œ๋กœ ๋งŒ๋“  ๋ฐ์ดํ„ฐ
ํ”„๋กœ์ ํŠธ ์ง„ํ–‰์‹œ API๊ฐ€ ๋‚˜์˜ค๊ธฐ์ „์— ํ”„๋ก ํŠธ์—”๋“œ์˜ ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ์ด ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ๋•Œ๋ฌธ์— mock data๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ƒํ™ฉ์„ ๋ฏธ๋ฆฌ ๋Œ€๋น„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•œ๋‹ค
https://ko.reactjs.org/docs/thinking-in-react.html


๐Ÿ‰ Data ํ˜ธ์ถœ์„ ์œ„ํ•œ fetch ํ•จ์ˆ˜๐Ÿ‰

์˜ˆ๋ฆฌ๋‹˜ ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ : https://yeri-kim.github.io/posts/fetch/

๐Ÿ‰ fetch ํ•จ์ˆ˜๋ž€?

๋ฐฑ์—”๋“œ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋ ค๋ฉด api๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ• ๋•Œ ์“ฐ๋Š” ํ•จ์ˆ˜ (axios ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ!)

fetch('api ์ฃผ์†Œ')
  .then(res => res.json())
  .then(res => {
    // data๋ฅผ ์‘๋‹ต ๋ฐ›์€ ํ›„์˜ ๋กœ์ง
  });

๐Ÿ‰ method๊ฐ€ get์ธ ๊ฒฝ์šฐ

fetch()ํ•จ์ˆ˜์—์„œ default method๋Š” get!
Get์€ ์กฐํšŒํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค

fetch('https://api.google.com/user/3')
  .then(res => res.json())
  .then(res => {
    if (res.success) {
        console.log(`${res.user.name}` ๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค);
    }
  });

๐Ÿ‰ method๊ฐ€ post์ธ ๊ฒฝ์šฐ

post์ธ ๊ฒฝ์šฐ fetchํ•จ์ˆ˜์— method ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค˜์•ผํ•œ๋‹ค.
Post๋Š” ์ƒ์„ฑํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
Body๋Š” ๊ฐ์ฒดํ˜•ํƒœ์ด๋ฉฐ JSON.stringfy()๋ฅผ ์ด์šฉํ•ด์„œ JSONํŒŒ์ผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
res.json()์€ ๋ฐฑ์—”๋“œ์—์„œ ๋ฐ›์•„์˜จ json()ํ˜•ํƒœ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

fetch('https://api.google.com/user', {
    method: 'post',
    body: JSON.stringify({ //jsonํ˜•ํƒœ๋กœ ๋ณ€ํ™˜
        name: "myname",
        batch: 1
    })
  })
  .then(res => res.json())
  .then(res => {
    if (res.success) {
        alert("์ €์žฅ ์™„๋ฃŒ");
    }
  })
profile
Front-end Developer ๐Ÿ‘ฉโ€๐Ÿ’ป

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด