๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
WEB/Front-End๐ŸŒ

[React] CRUD๋ฅผ ๊ณ๋“ค์ธ,,, (Create)

by narang111 2021. 10. 11.

create

 

์–ด๋–ป๊ฒŒ ๋ฆฌ์•กํŠธ๋ฅผ ํ†ตํ•ด์„œ create๋ฅผ ํ•  ๊ฒƒ ์ธ๊ฐ€?!

 

ํ•ด๋ณผ ๊ฒƒ์€?

๊ฐ„๋‹จํ•˜๊ฒŒ ์ž…๋ ฅ ํผ์„ ๋งŒ๋“ค๊ณ  ์ž…๋ ฅ๋œ ๊ฒƒ์„ ๋ฐ›์•„์„œ ๋ณธ๋ฌธ ๋‚ด์šฉ์— ํ‘œ์‹œํ•  ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์ด ์ƒ์„ฑ ๊ธฐ๋Šฅ์ด๋‹ค.

 

๋ชฉ๋ก์— create, update, delete ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

์ด ์ฝ”๋“œ๋ฅผ Conrtorl.js๋กœ ๋นผ์ฃผ๊ณ  App.js์— import ํ•ด์ฃผ์—ˆ๋‹ค.

 

 

 

 

Control ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ชฉ๋ก ์ค‘ ํ•˜๋‚˜๋ฅผ ํด๋ฆญํ–ˆ์„ ๋–„์˜ ๋™์ž‘์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•  ๊ฒƒ์ด๋‹ค.

onChagneMode๋ผ๋Š” ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•  ๊ฒƒ์ด๋‹ค

(์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋์„ ๋•Œ ์‹คํ–‰๋˜์–ด์•ผ ํ•  ํ•จ์ˆ˜๋ฅผ ํ•ธ๋“ค๋Ÿฌ๋ผ๊ณ ๋„ ํ•œ๋‹ค.)

๊ฐ๊ฐ์˜ ๋ชฉ๋ก์„ ํด๋ฆญํ•˜๋ฉด onChangeMode๋ฅผ ์ธ์ž๋กœ ํ˜„์žฌ ๋ˆ„๋ฅธ ๋ชฉ๋ก์˜ ์ด๋ฆ„์„ ์ธ์ž๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

onChangeMode์—์„œ๋Š” ์ด ์ธ์ž๋ฅผ ๋ฐ›์•„์„œ ํ˜„์žฌ state์˜ mode๋ฅผ ์„ค์ •ํ•œ๋‹ค.

 

 

 

create๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ฆ‰ mode๊ฐ€ create ๋ผ๋ฉด ์•„๋ž˜ content๋ฅผ create-content๋กœ ๋ฐ”๊ฟ”์ค„ ๊ฒƒ์ด๋‹ค.

๊ธฐ์กด์— ์žˆ๋˜ Content๋ฅผ ReadContent๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  CreateContent.js ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด ์ค€๋‹ค.

(import, export, ํด๋ž˜์Šค์ด๋ฆ„, ํŒŒ์ผ๋ช… ๋‹ค ๋ฐ”๊ฟ”์ฃผ๊ธฐ!)

 

Control์—์„œ create๋ฅผ ํด๋ฆญํ•˜๋ฉด App์˜ ๋ชจ๋“œ๊ฐ€ create๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ๊นŒ์ง„ ๋˜์–ด์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ReadContent๋ฅผ CreateContent๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ! ReadContent๋ฅผ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ์œ„ํ•ด์„œ _article์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ด๋‹ค.

 

 

 

๋ณ€์ˆ˜๋ฅผ ๋จผ์ € var _article = null; ๋กœ ์„ค์ •ํ•ด์ค€๋‹ค. 

๊ทธ๋ฆฌ๊ณ  welcome, read ๋ชจ๋“œ์— ๋”ฐ๋ผ์„œ _article์— title๊ณผ desc ๋ฅผ ๋‹ด์•„์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  return ์•ˆ์—์„œ๋Š” <ReadContent>๋Œ€์‹  {_article}์œผ๋กœ ๋Œ€์ฒดํ•œ๋‹ค.

 

 

Create๋กœ mode๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๋ณธ๋ฌธ๋‚ด์šฉ์„ CreateContent๋กœ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ์ด๋‹ค.

CreatContent์—๋„ ์ž…๋ ฅ ํผ์„ ๋„ฃ์–ด์ฃผ์—ˆ๋”ฐ.

 

 

์ž…๋ ฅํ•œ ์ •๋ณด๋ฅผ create_process ํŽ˜์ด์ง€๋กœ ๋ณด๋‚ผ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ๋ฅผ ํ•  ๋•Œ์—๋Š” method๊ฐ€ post ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ url์— ๋…ธ์ถœ์ด ์•ˆ๋œ๋‹ค.

onSubmit์€ submit ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ฒ„ํŠผ์ด ํฌํ•จ๋œ ํผ ํƒœ๊ทธ์˜ onSubmit์ด ๋ผ๋Š” ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

html์˜ form ๊ธฐ๋Šฅ์ด ๊ณ ์œ ํ•˜๊ฒŒ ๊ฐ€์ง„ ๊ธฐ๋Šฅ์ด๋‹ค. ๋ฆฌ์•กํŠธ ๊ธฐ๋Šฅ ์•„๋‹˜

formํƒœ๊ทธ์—์„œ๋Š” submit ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋–„ action์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š”๋ฐ,

์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ์ด๋™์—†์ด ๋ชจ๋“  ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” application์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค.

์ œ์ถœ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์•Œ๋žŒ์„ ๋„์›Œ์„œ ๋™์ž‘์ด ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธํ–ˆ๋‹ค.

 

 

 

์ด์ œ๋Š” submit ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ onSubmit ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ CreateContent์„ ๊ฐ€์ ธ๋‹ค์“ฐ๊ณ ์žˆ๋Š” App์ปดํฌ๋„ŒํŠธ์˜ contents ๋ผ๋Š” ๋ฐ์ดํ„ฐ ๋์— ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๊ธฐ์œ„ํ•ด์„œ๋Š” createContent์— ์„ค์น˜๋œ ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰์‹œ์ผœ์•ผํ•œ๋‹ค.

์—ฌ๊ธฐ์—๋„ onSubmit๋ผ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ์•ˆ์— ์‹คํ–‰์‹œํ‚ฌ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

 

CreateContent.js์˜ onSubmit์„ ํ˜ธ์ถœํ•  ๋•Œ ์ž…๋ ฅํ•œ ํƒ€์ดํ‹€๊ณผ desc๋ฅผ ๋ณด๋‚ด์ฃผ๋Š”๋ฐ 

์ด ๋–„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ debugger๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํƒ€์ดํ‹€๊ณผ desc๋ฅผ ์ž…๋ ฅํ•ด์„œ ์ œ์ถœ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ์˜ e ๊ฐ์ฒด์•ˆ์˜ ์†์„ฑ ๊ฐ’๋“ค์„ ์ž˜ ์‚ดํŽด๋ณด๋ฉด ๋œ๋‹ค.

(onsubmit ์ด๋ฒคํŠธ์—์„œ ์–ด๋–ป๊ฒŒ form์˜ value ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‚˜์š”??)

 

 

์ฐพ์•„๋ดค๋”๋‹ˆ

e.target.title.value

e.target.desc.value๋กœ ๊ทธ ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

์ด์ œ ์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์˜จ ๊ฐ’์„ state์˜ contents ๋์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ธฐ์กด์— ์žˆ๋˜ id ์—์„œ 1 ๋” ํฐ id ๊ฐ’์„ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค. ์ˆ˜์—…์—์„œ๋Š” ์–ด๋””?์— ์ €์žฅํ•ด๋†“๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ–ˆ๋‹ค

max_content_id๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ id ๊ฐ’์„ ๋ญ๋กœ ํ• ๊นŒ์— ๋Œ€ํ•ด์„œ๋งŒ ํ•„์š”ํ•œ ์ •๋ณด์ผ ๋ฟ ui์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— state ๊ฐ’์œผ๋กœ ์•ˆํ•ด๋„ ๋œ๋‹ค. ์˜คํžˆ๋ ค ํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ rendering์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„!

 

 

์ด๋ ‡๊ฒŒ๊นŒ์ง€ ์™„๋ฃŒํ•˜๋ฉด ์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ์›น ํŽ˜์ด์ง€์— ์ž˜ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.