controlled component
/ uncontrolled component
์ ์ด ์ปดํฌ๋ํธ
๋ state์ input์ ๋ฑ ๋ฌ๋ผ๋ถ๊ฒ๋ ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ๋งํ๋ค.
state๋ฅผ ๋น์์ฃผ๋ฉด input์ ๋น์์ค ์ ์๋ค. state๋ก input์ ์ ์ดํ ์ ์๋ค.
๊ทธ๋ ์ง ์์ ์ปดํฌ๋ํธ๊ฐ ๋น์ ์ด ์ปดํฌ๋ํธ
์ด๋ค.
๊ทธ๋ ๋ค๊ณ ํด์ ์ ์ด์ปดํฌ๋ํธ
๊ฐ ๋ฌด์กฐ๊ฑด ์ข์๊ฑด ์๋๋ค. ํ๋ ์
๋ ฅํ ๋ ๋ง๋ค props๋ก ๋๊ฒจ์ฃผ๊ธฐ ๋๋ฌธ์ ์ฅ๋ฌธ์ ๊ธ์ ์์ฑํ๊ฒ ๋๋ฉด ๊ต์ฅํ ๋ฒ๋ฒ
๊ฑฐ๋ฆฐ๋ค.
๊ทธ๋ ๋ค๊ณ ๋น์ ์ด ์ปดํฌ๋ํธ
๊ฐ ๋ฌด์กฐ๊ฑด ์ข์ ๊ฒ๋ ์๋๋ค. ๊ธ ๋ฑ๋กํ๊ณ ๋์ ์ด๊ธฐํ ํด์ค์ผํ๋๋ฐ document.getElement๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ธ์ค๊ฒ ๋๋ฉด ๊น๋ํ ๋ฐฉ๋ฒ์ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ ์ด ์ปดํฌ๋ํธ
๋ input์ ์์ฑ๋ ๊ฐ์ด state๋ผ๊ณ 100% ๋ฑ ์ ์ ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ณ์ข๋ฒํธ์ฒ๋ผ ์ค์ํ ๋ฐ์ดํฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ ์ด์ปดํฌ๋ํธ
๋ฅผ ์จ์ฃผ๋ ๊ฒ์ด ์ข๋ค. (์ ์ด์ปดํฌ๋ํธ
๊ฐ ๋ ์์ ํ์ง๋ง ์ฑ๋ฅ์ ๋จ์ด์ง๋ค.)
๋ฐ๋ฉด์ ์ด๋ฐ ์ค์ํ ๊ธ์ด ์๋๋ผ๋ฉด ๋ฒ๋ฒ
๊ฑฐ๋ฆผ์ด ์๊ฒ๋ ๋น์ ์ด ์ปดํฌ๋ํธ
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
๋ค์ ๊ฒ์๊ธ ๋ชฉ๋ก์์
์ด๋๋ฅผ ๋๋ฅด๋๋ผ๋ ๋์ผํ ๋ก์ง์ด ์คํ๋๊ฒ๋ ํ๊ณ ์ถ์ ๋๋ onClick์ ์ด๋์ ๋์ด์ผ ํ ๊น? ์ด๋ ํ์ํ ๊ฒ์ด event-bubbling์ด๋ค.
event-bubbling์ด๋ ์์์์ ๋ถ๋ชจ๋ก ์ด๋ฒคํธ๋ฅผ ์ ํ(์ฎ๊ฒจ๊ฐ)ํ๋ ๊ฒ์ด๋ค.
์์์ ๋๋ ๋๋ฐ onClick์ด ์์๊ณผ ๋ถ๋ชจ์์ ๋ชจ๋ ์คํ๋๊ฒ ํ ์ ์๋ค.
(์ด์ ๋ฐ๋๋ง๋ก Event-Capturing์ด ์๋ค. )
event-bubbling์ ์ํด์ ์ด์ฒ๋ผ writer, contents, date์ id๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๊ธด ํ๋ค.
ํ์ง๋ง ์ด๋ ๋ชจ๋ ์์๋ค์๊ฒ ์์ด๋๋ฅผ ๋ค ์ค์ผํ๊ธฐ ๋๋ฌธ์ ์ข์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๋๋ค.
๋ ์ข์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์์๋ณด์. ๋ฐ๋ก event.currentTarget.id
๋ฅผ ์ฌ์ฉํด์ฃผ๋ ๊ฒ์ด๋ค.
์ ์ฒ๋ผ id
๋ฅผ ๋ถ๋ชจ์ ์ ์ด์ฃผ๊ณ ์คํํ๋ ํจ์์ event.target.id๋ฅผ event.currentTarget.id
๋ก ์์ฑํด์ ํ์ฌ ์คํ๋๋ ํ๊ทธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
event-delegation๋ ์ฌ๋ฌ ์ฅ์ ๋ค์ด ์๋ค.
์ถ์ฒ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค๋ฅธ์ฌ๋๋ค์ด ๋ง๋ค์ด๋์ ํน์ ๊ธฐ๋ฅ ํ๋๋ฅผ ์๋ฏธํ๊ณ
ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์งํฉ์์ผ ๋์ ๋๊ตฌ ๋ชจ์์ด๋ผ๊ณ ํ ์ ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด 1. ์๊ฐ ์ ์ฝ
๊ณผ 2. ๋ฒ๊ทธ ์ต์ํ
์ ์ฅ์ ์ด ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ฒ ๋ง๋ค์ด ๋ณด๋ ๊ฒ๋ ์ข์ง๋ง ์ค์ ๋ก ์๋น์ค ๋ฐฐํฌ๋ฅผ ์ํด์ ๊ฒ์ฆ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ฐํ๋ ๋ฅ๋ ฅ์ด ์ค์ํ๋ค.
๋ฒ ์คํธ 10 ๋ฆฌ์กํธ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ 2020
UI ํ๋ ์์ํฌ - Ant Design, Material-UI
๋ฆฌ์กํธ์์ ์ฐจํธ๊ทธ๋ ค์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ - Recharts
์งํ๋ฅ UI - antd progress