01. React Component
Last updated
Last updated
๊ฐ๋ ๋ฐ ์ ์
๋์์ธ ์์คํ ๋ฐฉ๋ฒ๋ก ์ค์ ํ๋
์ฃผ๊ธฐ์จํ ์์ ์์(atom)๋ค์ด ์ด๋ป๊ฒ ๊ฒฐํฉํ๋๋์ ๋ฐ๋ผ์ ์ธ์ ๋ชจ๋ ๊ฒ๋ค์ ์์ฑํ ์ ์๋ฏ์ด
์นํ์ด์ง์ ์ปดํฌ๋ํธ๋ฅผ 5๊ฐ์ง ๋ ๋ฒจ๋ก ๋๋ ์ฒด๊ณํํ๋ ๋ฐฉ๋ฒ
ํ์์ฑ ๋ฐ ์์
๊ท์น์ ์ ๊ฐ๊ฐ์ผ๋ก ๋ง๋ค๋ฉด, ๊ด์ฌ์ฌ๊ฐ ๋๋ฌด ๋ง๊ฑฐ๋
์ฌ์ฌ์ฉ์ด๋ ํ์ฅํ ์ ์๋ ์ปดํฌ๋ํธ๊ฐ ์๊ธฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด
ํน์ง
atom - molecule - organism - Template - page์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ์ชผ๊ฐ๋ ๋ฐฉ๋ฒ
atom: ๋์ด์ ์ชผ๊ฐค ์ ์๋ ๋จ์ผ์์ (ex. ํ๊ทธ, ๊ธ๊ผด, ์ปฌ๋ฌํ๋ ํธ, ๋ ์ด์์ ๋ฑ)
molecule: ์ฌ๋ฌ atom์ ๊ฒฐํฉ, ๊ณ ์ ์ ํน์ฑ์ ๊ฐ์ง, ํ๊ฐ์ง ๋์์ ํจ(SRP, Single Responsibility Principle) - ํ ์คํธํ๊ธฐ ์ฝ๊ณ , ์ฌ์ฌ์ฉ์ฑ ๋์
organism: ํน์ ์ปจํ ์คํธ๋ฅผ ๊ฐ์ง, ์๋์ ์ผ๋ก ๊ตฌ์ฒด์ , ์ฌ์ฌ์ฉ์ฑ ๋ฎ์ (ex. header)
Template: ์ปดํฌ๋ํธ๋ฅผ ๋ฐฐ์นํ๊ณ ๊ตฌ์กฐ๋ฅผ ์ก๋ ์์ด์ดํ๋ ์, ์ปจํ ์ธ ๊ฐ ์๋ page (์ค์ผ๋ ํค)
Page: ์ ์ ๊ฐ ๋ณด๋, ์ค์ ์ปจํ ์ธ ๋ฅผ ๋ด์ ์์, template์ ์ธ์คํด์ค๋ผ๊ณ ๋ณผ ์ ์์.
๋ฐฉ๋ฒ
Molecule vs Organism
SRP, Single Responsibility Principle์ ์งํฌ ์ ์๋๋
Context๊ฐ ์์ด๋ ์ปดํฌ๋ํธ์ ์ญํ ์ด ์ค๋ช ์ด ๋๋๋
๊ทธ๋๋ ๋ชจํธํ๋ฉด ์ผ๋จ Organism
์ค๋ณต ์ปดํฌ๋ํธ
compound ์ปดํฌ๋ํธ (ํฉ์ฑ ์ปดํฌ๋ํธ)๋ก ํด๊ฒฐํ๊ธฐ
UI ์ ์ดํ๋ ์ํ ์ด๋ฐ๊ฑฐ๋ ๋ค ์ธ๋ถ์์ ์ฃผ์ ํ๊ธฐ (์คํ ๋ฆฌ๋ถ ์ ์ฉ)
๋ง์ง, ํจ๋ฉ๊ณผ ๊ฐ์ ๋ ์ด์์ ๊ด๋ จ ์คํ์ผ๋ ์ธ๋ถ์์ ์ฃผ์ ํ๊ธฐ
UI ๋ชจ๋ธ๋ง
ํ๋์ ์ปดํฌ๋ํธ์ ๋จ์๋ฅผ ์ชผ๊ฐ๊ณ ๋ค์ด๋ฐ ํ๋ ๊ณผ์ ์ ํผ๊ทธ์ผ์ ํตํด ํจ๊ป ์งํํ๊ธฐ
๊ฐ์ธ์ ์ธ ์๊ฐ(์ถ๊ฐ์ ์ธ ์ง๋ฌธ ๋๋ ์ธ์ฌ์ดํธ)
๋ ํผ๋ฐ์ค ๋ชจ์
๋ชฉ์ ์ ๊ฐ๋
RestAPI
๊ฐ๋
๋ ์ปดํจํฐ ์์คํ ์ด
์ธํฐ๋ท์ ํตํด
์ ๋ณด๋ฅผ ์์ ํ๊ฒ ๊ตํํ๊ธฐ ์ํด
์ฌ์ฉํ๋ ์ธํฐํ์ด์ค (์ฝ๋)
์ฉ์ด ์ ๋ฆฌ
Rest:
์ํํธ์จ์ด ์ํคํ ์ฒ์ ์ผ์ข
REpresentational State Transfer์ ์ด๋์
API ์๋ ๋ฐฉ์์ ๋ํ ์กฐ๊ฑด์ ๋ถ๊ณผ
RESTful ์น์๋น์ค:
REST ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ ์น์๋น์ค
Representational (๋ํฌํ๋) State (์ํ) Transfer (์ด๋)
API:
Application Programing Interface
์๋ก ๋ค๋ฅธ ์ํํธ์จ์ด ์ฌ์ด์
ํต์ ์ ์ํด์
ํ๋ก๊ทธ๋๋ฐ ์ ์ผ๋ก ๋ฐ๋ผ์ผํ๋ ๊ท์น์ ์ ์.
์น์ ๊ฒฝ์ฐ, ์น ์๋ฒ์ ๋ฆฌ์์ค(๋ฐ์ดํฐ)์ ์ ๊ทผํ๋ ค๋ ์ฌ์ฉ์์ ์น์๋ฒ ๊ฐ์ ๊ฒ์ดํธ์จ์ด
URI:
์์(๋ฆฌ์์ค)์ ๊ตฌ์กฐ์ ํจ๊ป ๋ํ๋ด๋ ๊ตฌ๋ถ์
(uniform resource identifier)
ํน์ง
๊ท ์ผํ ์ธํฐํ์ด์ค
์์ฒญ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํด์ผํจ. ๊ท ์ผํ ๋ฆฌ์์ค ์๋ณ์๋ฅผ ์ฌ์ฉ
๋ฌด์ํ
๊ณ์ธตํ์์คํ
์บ์๊ฐ๋ฅ์ฑ
์จ๋๋งจ๋์ฝ๋
๋์ฌ ๋ง๊ณ ๋ช ์ฌ๋ก
๋์ (HTTP METHOD ์ค 5๊ฐ์ง๋ฅผ ์ฌ์ฉ)
GET,
POST,
PUT: ์ ๋ณด๋ฅผ ํต์ฑ๋ก ๊ฐ์ ๋ผ์ธ ๋
PATCH: ์ ๋ณด ์ค ์ผ๋ถ๋ง ๋ณ๊ฒฝํ ๋
DELETE
๊ฒฐ๋ก : ์ด๋ค URI์ ์ด๋ค METHOD๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ
์ญ์ฌ
๊ณผ๊ฑฐ์ SOAP์ด๋ ๋ณต์กํ ๋ฐฉ์์ ๋ณด์ํ๊ฒ
์ฅ์
์ ๋ณด๋ฅผ ์์ฒญํ๊ณ ์ ๊ณตํ ๋ ํ์์ ๋ฏธ๋ฆฌ ์ง์ ํจ์ผ๋ก์จ
๋๊ตฌ๋ ํ์์ ์๊ณ ์๋ค๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ํ์ฉํ ์ ์๋๋ก ํจ
์์ฒญ๋ง ๋ณด๊ณ ๋ ์ด ์์ฒญ์ด ์ด๋ค ์์ฒญ์ธ์ง ์ถ๋ก ์ด ๊ฐ๋ฅํ๋ค
๋ ํผ๋ฐ์ค
https://aws.amazon.com/ko/what-is/restful-api/?nc1=h_ls
GraphQL
์ญ์ฌ
RESTful api - ๋ฉ์๋์ uri๋ฅผ ์กฐํฉํด์ ์์ธก ๊ฐ๋ฅํ๊ณ ์ผ์ ํ ์ ๋ณด์ ์์ ์ ์์ฒญ
๋ฒํผ๋ง๋ค ๋์ค๋ ๊ฒ์ด ํ์คํ ์ํ๊ธฐ์ฒ๋ผ..
ํ์ง๋ง ์ฌ๋ฌ ๋์ค์ ์๋ ์ ๋ณด๋ค์ ์์ฒญํ๋ ค๋ฉด, ์์ฒญ์ ๋ ๋ฒ ๋ณด๋ด์ผํ๋ค๊ฑฐ๋, ๋ฐ์ดํฐ ์ค ์ผ๋ถ๋ง ํ์ํ ๋์๋ ์ ์ฒด ์ ๋ณด๋ฅผ ์ ์กํด์ฃผ์ด์ ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ ์ ์์.
RESTful api๋ ์์ฒญ ์์ฒด๋ฅผ ๊ฐ๋จํ๊ฒ ํ๋ ๋์ ์๋ต์ด ๋ช ํํ์ง ์์ง๋ง, GraphQL์ ์์ฒญ์ด ๋ณต์กํด์ง๋ ๋์ ์๋ต์ด ๋ช ํํด์ง๋ค.
์ฌ์ฉ๋ฒ (์ธ์ด๋ง๋ค ์ฌ์ฉ๋ฒ์ด ์์!)
nodejs, express
schema (๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ ํํ๋ฒ, ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ง) query์์ ์ป๊ณ ์ ํ๋ ๊ฑธ ์คํค๋ง์ฒ๋ผ ๋ฃ์ด์ฃผ๊ฑฐ๋ ์. ์ฟผ๋ฆฌ ์์ฒด์์ ์ง์ ์ ํด์ค์. ์ฟผ๋ฆฌ ๋ญ๊ท์ง๋ผ์ SQL์ด๋ ๋น์ทํด์. Query(Read), Mutation(Command: Create, Update, Delete), Subscription(Event)
์ง๊ธ์ key๋ก ์ธ ์ ์๋๊ฒ ์์ด์ ์ ์ฒด๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ ๋ค๊ฑฐ๋ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ ์ ์ key๋ฅผ ๋ง๋ค์ด์ค์ผํด์.
JSON
JavaScript Object Notation : ๊ฒฝ๋์ ๋ฐ์ดํฐ ๊ตํํ์์ด๋ค.
json.org ๋๊ธ๋ผ์ค ์ด์ฉ๊ตฌ๋์ด js๋ฅผ ์ ๋๋ก ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ํ ..
๋ฌธ์์ด๊ณผ ์ค๋ธ์ ํธ ์ฌ์ด์ ๋ฐ์ดํฐ
๋ฌธ์์ด -> ์ค๋ธ์ ํธ: parse ์ค๋ธ์ ํธ -> ๋ฌธ์์ด: stringify
์ปดํฌ๋ํธ ๊ณ์ธต๊ตฌ์กฐ
์๋์ฐจ ์กฐ๋ฆฝํ๋ฏ
๋๋๋ ๊ธฐ์ค
SRP (Single Responsibility Principle)
SOLID
์บก์ํ๋ ์ปดํฌ๋ํธ
ํ๋์ ์ฑ ์๋ง ๊ฐ๋๋ก
์ปดํฌ๋ํธ๊ฐ ๋๋ฌด ๊ธธ์ด์ ธ -> ์ชผ๊ฐ์ค์ผ๋จ
CSS ํด๋์ค ์ ํ์ ์ฐธ๊ณ ํ๊ธฐ
Design's Layer ๋์์ด๋๊ฐ ์ง๋์ ๊ทธ๋ฃน, ์ปดํฌ๋ํธ ๊ธฐ์ค ์ฐธ๊ณ ํ๊ธฐ
Information Architecture: JSON์ ์คํค๋ง ํ์ฉ => ๋ฐ๋ก ํ์ฉํ ์ ์๋ค๋ฉด ๋ฐฑ์๋ํํ ์์ฒญ (์์ฌ's pick) => ์์ฐ์ค๋ฝ๊ฒ SRP๊ฐ๋ฅ / ํน์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ ๋ ๊ฐ๊ณต
์ฅ์ : ๋ง๋ค๊ณ ๋๋ฉด ์กฐ๋ฆฝ ๋ฐฉ์์ ์ฝ๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅํด์ง
์ํ ๋ฏน๋์์ธ => ๊ณ์ธตํ ๊ตฌ์กฐ๋ฅผ ๋ช ๊ฐ์ง ์นดํ ๊ณ ๋ฆฌ๋ก ๋ฌถ์ ๋ฐฉ๋ฒ
์ ์ ์ธ ui๋จผ์ ๊ตฌํ (ex. html ๊ตฌ์กฐ)
DSL(Domain-Specific Language)
์ ์ธํ ํ๋ก๊ทธ๋๋ฐ
๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ
React component ์ props
map ์ฌ์ฉ -> ์ด๋ฆ์ด ๊ฒน์น์ง ์๋๋ค๋ ์ ์ ํ์ ์ด๋ฆ์ ํค๋ก ์ก๋๋ค.
Extract Function
Refactoring.com
์ฝ๋๋ฅผ ํจ์๋ก ๋บ๋ค = ์ด ์ฝ๋๊ฐ ์ด๋ค ์๋๋ฅผ ๊ฐ๊ณ ์์ฑ๋ ์ฝ๋์ธ์ง, ์ด๋ค ๋์์ ํ๋์ง ์ค๋ช ์ ํ๊ฒ ๋ค
useRef
selectCategories... ์ด์ฉ๊ตฌ.. ๊ณ์๊ณ์ ์ชผ๊ฐ๊ณ ์ชผ๊ฐ๊ณ ..
์ฌ๊ธฐ๊น์ง๊ฐ ์ ์ ์ธ๊ฒ ์๋ํ๊ฒ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
๋ฐ๋ก ํ์ผ์ ์๋ก ๋ง๋ค์ง ๋ง๊ณ ์ผ๋จ ํ ํ์ผ ๋ด์์ ํจ์๋ก ๋บ๋ค.