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์ด ๋ฐ์ํ ์๋!
์ด๋ ๊ฒ๊น์ง ์๋ฃํ๋ฉด ์ ๋ ฅํ ์ ๋ณด๊ฐ ์น ํ์ด์ง์ ์ ํ์๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'WEB > Front-End๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Update ๊ธฐ๋ฅ ๊ตฌํ, ๋ฆฌํฉํ ๋ง (0) | 2021.10.12 |
---|---|
[React] ์ฑ๋ฅ๊ฐ์ ์ ์ข ๋ ํธํ๊ฒํ๊ธฐ (create) (0) | 2021.10.11 |
[React] ์ด๋ฒคํธ, state ํ๊ณ ๋ค๊ธฐ (0) | 2021.10.07 |
[React] event์์ state ๋ณ๊ฒฝ (feat. bind, setState) (0) | 2021.10.07 |
[React] event (0) | 2021.10.04 |