๐ Study/JS, JQuery
[React JS][๋์ฝ ์ฝ๋ฉ] STATE
kkh1902
2022. 2. 17. 09:05
728x90
๋ฐ์ํ
3.0 Understanding State
- state๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ์ด๋ค.
- ๋ฐ๋๋ผ JS๋ก ์์ ๋ฅผ ์์ฑ์ํค๋ ค๋ฉด counter๋ฅผ ์ฆ๊ฐ์ํค๊ณ ๊ทธ๊ฑธUI์ ๋์คํ๋ ์ด ํ๊ณ ์๋ค.
- ๊ทธ๊ฑธ state๋ก ๋ง๋ค ์ ์๋ค. counter๋ง์ด๋ค.
- ์ด๋ป๊ฒ ํ๋ฉด React.js์ดํ์ ๊ฐ์ด ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์์ค์ ์์๊น.
- ์ด์ React.js ์ฝ๋ ๋ด์์ ์นด์ดํธ๋ฅผ ์ ์ ์๊ฒ ๋ง๋ค์ด ๋ณด์.
- ๋๊ฐ์ง ๋ฐฉ์์ด ์๋ค ์ข์ง์์ ๋ฐฉ์๊ณผ ๋ค๋ฅธํ๋๋ ์ฐ๋ฆฌ๊ฐ ํด์ผํ ์ต๊ณ ์ ๋ฐฉ์์ด๋ค.
- ๋จผ์ ๋ณ๋ก ์ข์ง ์์ ๋ฐฉ์์ผ๋ก ํด๋ณด๊ณ ์ฐ๋ฆฌํํ ์ด๋ค๊ฒ ํ์ํ๊ณ , ์ด๋ค๊ฑธ ํด์ผ๋๋์ง ์ดํดํ๊ณ ๋์ ํ๋กํ์ ๋ํ React.js ๋ฐฉ์์ ๋ณด์ฌ์ค๋ค.
- ๊ทธ๋ฌ๋ฉด ์ ๊ทธ๋ฐ๋ฐฉ์์ผ๋ก ํ๋ ๊ฑด์ง ์ดํดํ ์ ์์๊ฑฐ๋ค.
- let counter= 0 ; ์ด๋ฐ ๋ณ์๋ค์ JSX์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ฅด์ผ ์ค๊ฑฐ๋ค.
- vanila.js
- ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํด์ค ํ์๊ฐ ์๋ค.
- $ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๊ฑฐ๋ (๋ณ์)๋ฅผ ์ถ๋ ฅํ ๋ ์ด๋ค. ๋ฌธ์์ด + ๊ฐ๋
- ๋ค๋ฅธ ๋ฐฉ์ button์ผ๋ก ๊ฐ์, ์ ์ ์จ๋ดค๋ onClick prop์ ๋ง๋ค์ด ์ฃผ๋ฉด๋๋ค.(React.js ๋ฐฉ์)
- ์ด ์ด๋ฒคํธ๋ฆฌ์ค๋๊ฐ countUp ํจ์๋ฅผ ํธ์ถํ๊ณ countUp์ ์นด์ดํธ๋ฅผ ๋ฐ๊ฟ์ค ๊ฑฐ๋ค.
- ๊ทธ๋ฌ๋ฉด ์ด๋ฒคํธ ์๋ X - > UI ๊ฐ ์ ๋ฐ์ดํธ ๋์ง ์์์ ์ผ์ด๋๋ ๋ฌธ์ ์ด๋ค.
- ์ด๋ฒคํธ๊ฐ ์๋์ ํ๋ UI๊ฐ ์ ๋ฐ์ดํธ ๋์ง ์๋๋ค.
- ํจ์๋ ๊ณง๋ฐ๋ก ์คํ x
- ์ด ์ค์ ์๋ ์ฝ๋๊ฐ ๋ฐ๋ก ์คํ๋๋ค. (์ฐ๋ฆฌ๊ฐ ํ์ด์ง๋ฅผ ๋ก๋ํ์๋ ๋ง์ด๋ค.)
- ๋ฆฌ๋ ๋๋ง์ ํ๊ณ ์์ง ์๋ค.(Container๋ฅผ ๋ฆฌ๋ ๋๋งํด์ ๋ค์ ๋ณด์ฌ์ค์ผ๋๋ค.)
- function ์ด๋ const๋ ๋น์ท? ์์ const Containerํด์ function์ฒ๋ผ ์ฐ๋๊ฑฐ
- const A= () ⇒ ();
- function A() {}
- ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์๋ค.
- ์๋๋ฉด ์ฌ๊ธธ ๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ๋ฐ๊ฟ ๋๋ง๋ค, ๋ค์ ๋ ๋๋งํ๋ ๊ฑธ ์์ด์๋ ์๋๊ฑฐ๋
- ๋ ๋๋ง์ ๊ณณ๊ณณ์์ ํด์ค์ผํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์
- ์ด๋ป๊ฒ ๋ฐ๊พธ๋์ง๋ ๋ค์๊ฐ์ ๊ทธ์ ์ React๊ฐ ๊ฐ์ง ์๋ ฅ์ ๋ณด์ฌ์ค๋ค.
- ํด๋ฆญํ์๋ ๊ตฌ๊ธ Chrome์ด๋ Brave๊ฐ ์์๋ค์ด ์ ๋ฐ์ดํธ๋๊ณ ์๋๊ฑธ ๋ฐ๋ก๋ฐ๋ก ๋ณด์ฌ์ค๋ค.
- ํด๋ฆญํ๋ฉด body๋ span์ด ์ ๋ฐ์ดํธ๋๊ณ ์๋๊ฑธ ๋ณด์ฌ์ค๋ค.
- ๋ณด๋ค์ํผ React.js๋ ์ด์ ์ ๋ ๋๋ง๋ ์ปดํฌ๋ํธ๋ ์ด๋ค๊ฑฐ์๋์ง ํ์ธํ๊ณ ์๋ค.
- ๊ทธ๋ค์์ ๋ ๋๋ง๋ ์ปดํฌ๋ํธ๋ ์ด๋ค์ง๋ฅผ ๋ณด๊ณ
- ๋ค์ Total clicks๋ฅผ ์์ฑํ ํ์ ์๊ณ button๋ ๋ค์ ์์ฑํ ํ์๋ ์๊ณ ์ค๋ก์ง ๋ฐ๋ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ ํด์ฃผ๋ฉด ๋๋ค. ์ฌ๋ฌ๊ฐ์ง ์์๋ค์ ๋ฆฌ๋ ๋๋งํ๋ ค๊ณ ํด๋ ์ ๋ถ๋ค ์๋ก ์์ฑ๋์ง ์๋๋ค
- ์ค๋ก์ง ๋ฐ๋ ๋ถ๋ถ๋ง ์์ฑ๋ ๊ฑฐ๋ค.
- ์ฐ๋ฆฌ๊ฐ ํด์ผ๋๋๊ฑด ๋ฐ์ดํฐ๊ฐ ๋ฐ๋๋๋ง๋ค Container๋ฅผ ๋ฆฌ๋ ๋๋ง ํด์ฃผ์ด์ผํ๋ค.
- ํ์ง๋ง ์ง๊ธ ์ด ๋ฐฉ์์ ๊ณ์ํด์ renderํด์ฃผ๋๊ฑธ ์์ผ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ์๋๋ค.
- ๋ค์ ๊ฐ์์์๋ ๋ฆฌ๋ ๋๋ง์ ๋ฐ์์ํฌ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ์์๋ณผ ๊ฑฐ๋ค.
ํด์ ์ ๋ฆฌ
- render() ํ๋ฉด render() ํจ์ ๋ฐ๋ ReactDOM์ฌ์ฉํด์ HTML์ ๋ํ๋ <Container>์ ํด๋นํ๋๊ฑธ ๋ฃจํธ์ ๋ณด๋
- Container๋ h3์ ํจ์๊ฐ ์๋ค. ๋ค์ ๋ ๋ ํ๋ค?
3.1 setState part One
- ์ฒซ์งธ๋ก ์ปดํฌ๋ํธ๋ JSX์ ๋ณ์๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๋
- ์ฐ๋ฆฌ๋ render๋ผ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ ์ดํ๋ฆฌ ์ผ์ด์ ์ด ์ฒ์ ์คํ๋ ๋ ํธ์ถํจ
- render๊ฐ ์ต์ด๋ก ํธ์ถ๋ ๋, ์ด ํจ์๋ Container ์ปดํฌ๋ํธ๋ฅผ root div์ ๋ด์์ค ๊ฑฐ๋ค.
- ๊ทธ๋ฆฌ๊ณ Container ํจ์๊ฐ ํธ์ถ ๋ ๊ฑฐ๋ค.→ Container ํจ์๊ฐ ํธ์ถ๋๋ฉด React Element๊ฐ ๋ฐํ๋ ๊ฑฐ๋ค.
- ์ด React ์์๋ Total click๊ณผ ์ฐ๋ฆฌ๊ฐ ์ถ๊ฐํด์ค ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์ฐ๋ฆฌ๊ฐ ๋ฒํผ์ ํด๋ฆญํ ๋, ๋ฌผ๋ก Container ์ปดํฌ๋ํธ ์ ์ฒด๋ฅผ ๋ฆฌ๋ ๋๋งํ๋ ๊ฑฐ์ง๋ง ์ฌ์ค์ HTML ์ฝ๋์์๋ ์ค๋ก์ง ์ซ์๋ง ๋ฐ๋๋ ๊ฑฐ๋ค.
- ์ ์ฒด๋ฅผ ์ ๋ถ ์ฌ์ฑ์ฑํ ํ์์์ด ๋ฐ๋๋ถ๋ถ๋ง ์๋ก ์์ฑํ ์ ์๊ฒ ๋์์ค๋ค.
๋ฌธ์ ๊ฐ ์๊น
- ๋ฐ์ดํฐ๊ฐ ๋ฐ๋๋๋ง๋ค ์ดํจ์๋ฅผ ํธ์ถํ๋๊ฑธ ์์ด์๋ ์๋๋ค๋ ๊ฑฐ๋ค.
- ๋ฆฌ๋ ๋๋ง ํ๋๋ฐ ๋ ์ข์ ๋ฐฉ์์ด ์์๊ฑฐ๋ค.
- ์ฐ๋ฆฌ๋ counter๊ฐ 0์ธ ์์ ์์ ์ต์ด๋ก ๋ ๋๋ง์ ํ ๊ฑฐ๋ค.
- ์ฐ๋ฆฌ๊ฐ ํ๋ ค๋๊ฑด ์ง๊ธ๊น์ง ์งํํ ๋ถ๋ถ์ ์ ๋ถ ์ญ์ ํ๊ณ React.js ์ดํ ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ณ ์๋์ผ๋ก ๋ฆฌ๋ ๋๋ง์ ์ผ์ผํฌ ์ ์๋ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด๋ คํ๋ค.
- React.js๊ฐ ์ฌ๋ฌ๋ถ์ด ์ํ๋ ๋ฆฌ๋ ๋๋ง์ ์ด๋ป๊ฒ ๋์์ฃผ๋์ง ์์๋ณผ๊ฑฐ๋ค.
- ๊ทธ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ ๋ง์ฝ ์ฌ์ฉ์์๊ฒ ์ ๋ฐ์ดํธ๋๊ฑธ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ผ๋ฉด ์๋ก์ด ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
React ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฃฐ๋, ์ด๋์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ผ๋ฉด ๋๋์ง ์๋ ค์ค๋ค.
- ๊ทธ ์ ์๋ counter ๊ฐ์ ๋ณ์์ ๋ด์๋ค.
์ด๊ฑฐ์ ๊ฐ์ ์ญํ ์ ํ๋ค.
- ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ์ด๊ธฐ๊ฐ ์ด๊ณ ๋ ๋ฒ์งธ ์์๋ ๊ทธ ๊ฐ์ ๋ฐ๊พธ๋ ํจ์ ์ด๋ค.
- ๋ฐฐ์ด ์ํ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฑด ๋ณด๊ธฐ ๋ถํธํ๋ค.
- ์ฐ๊ฒฐ๋๊ณ ์ ์๋ํ์ง๋ง ๋ณด๊ธฐ ์ข์ง๋ ์๋ค.
- ๊ทธ๋์ JavaScript๊ฐ ๊ฐ์ง ์ ๋ง ๋ฉ์ง ๋ฌธ๋ฒ์ด ์๋๋ฐ ์์ฃผ ์งง์ ์ฝ๋๊ฐ ์๋ค.
- const x = [1, 2, 3]
- const [a, b, c] = x;
- a=1 , b=2, c=3
- ์ด์ ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ ๋ณผ๊ฑด ์ด๋ป๊ฒ modifier๋ฅผ ์ด์ฉํด์ counter์ ๊ฐ์ ๋ฐ๊ฟ์ค์ง
- ์ modifier๊ฐ ํ์ํ์ง
- counter = 120 ์ ์ด๋ ๊ฒ ํ๋ฉด ์๋๊ณ modifier๊ฐ ํ์ํ์ง ๋ฐฐ์๋ณด์
3.2 setState part Two
- React.js๊ฐ data๋ฅผ ๋ด๋ ๊ฒ๊ณผ ์ ๋ฐ์ดํธํ๋๊ฑธ ์ด๋ป๊ฒ ๋์์ฃผ๋์ง ๋ฐฐ์๋ดค๋ค.
- ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด๊ฑด useState๋ฅผ ์ฌ์ฉํ์๋ useState๋ ์ฐ๋ฆฌํํ ๋ฐฐ์ด ํ๋๋ฅผ ์ค๋ค.
- ๊ทธ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๋ ์ฐ๋ฆฌ๊ฐ ๋ด์ผ๋ ค๋ data ๊ฐ์ด๊ณ
- ๋๋ฒ์งธ ์์๋ ์ด data ๊ฐ์ ๋ฐ๊ฟ๋ ์ฌ์ฉํ modifier์ด๋ค.
- ์ด์ ์ modifier๊ฐ ํ์ํ์ง ๋ฐฐ์๋ณผ ๊ฑฐ๋ค.
๋ ๋ฌธ์ ๋ฐ์
- ๊ฐ์ ๋ฐ๊ฟจ๋๋ฐ ์ปดํฌ๋ํธ๋ ๋ฆฌ๋ ๋๋ง๋์ง ์๋ ์ํฉ์ด๋ค.
- ์ฌ๊ธฐ ์ ๊ธฐ์ ์ด ํจ์๋ฅผ ํธ์ถํ๋ ๊ฑด ์๋นํ ๊ท์ฐฎ๋ค.
- ๋ฆฌ๋ ๋๋ง์ ํด์ฃผ์ด์ผ ํ๋ค.
- ์ด๋ค ๊ฐ์ ๋ถ์ฌํ๋ modifierํจ์๋ ๊ทธ ๋ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ๋ฆฌ๋ ๋๋ง์ ์ผ์ผํฌ ๊ฑฐ๋ค.
- ์ด๊ฒ ๋ฐ์ ํจ์ ํ๋๋ก ๋๋ค.
- ๋ฆฌ๋ ๋๋ง์ด ์๋์ผ๋ก ์ด๋ฃจ์ด์ก๋ค.
- ์ ์ ๊ฐ์์์๋ ์ฐ๋ฆฌ๊ฐ ์ง์ ๋ฆฌ๋ ๋๋ง ํด์คฌ๋ค
- button์ด onClick ๋๋ฉด onclick ํจ์๋ฅผ ์คํ์์ผ๋ผ
- ๋ณดํต ์ฌ๋๋ค์ด ํ๋ ๋ฐฉ์์, ๋ฐ์ดํฐ๋ฅผ ์ด๋ฆ ๋ถ์ผ๋ counter์ฒ๋ผ ์ํ๋๋๋ก ๋ถ์ด๊ณ
- modifier๋ modifier๊ฐ ์๋๋ผ, set ๋ค์ ๋ฐ์ดํฐ์ด๋ฆ์ ๋ถ์ฌ์ฃผ๋ ๊ฑฐ์ผ
- React.js๋ ์ค๋ก์ง ๋ฐ๋ ๋ถ๋ถ๋ง์ ์ ๋ฐ์ดํธ ํด์ฃผ๊ณ ์๋ค.
- React๊ฐ ๊ฐ์ง ๋ง๋ฒ์ด๋ค
- React๋ ์ ๋ฐ์ดํธ ์ฌ์ด์ฌ์ด๋ง๋ค, ์ ํํ ์ด๋ค๊ฒ์ด ์ ๋ฐ์ดํธ๋๋์ง ํ์ ํด์ HTML์์ ๊ทธ ๋ถ๋ถ๋ง ๊ณ ์น๋ ๊ฑฐ๋ค.
3.3 Recap
- React ์ปดํฌ๋ํธ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ฐ๊พธ๋์ง ๋ฐฐ์๋ดค๊ณ
- modifier ํจ์๋ฅผ ์ด์ฉํด์ ์ปดํฌ๋ํธ์ state๋ฅผ ๋ฐ๊ฟ๋ ์ปดํฌ๋ํธ๋ ์๋ก์ด ๊ฐ์ ๊ฐ์ง๊ณ ๋ค์ ํ๋ฒ ๋ ๋๋ง ๋๋๊ฑฐ๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋ฐ๋๋๋ง๋ค ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํ๊ณ UI๋ฅผ refreshํ๋ ๊ฑฐ๋ค.
- ๊ฐ์ฅ ์ค์ํ๊ฑด state๊ฐ ๋ฐ๋๋ฉด ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋๋ค๋ ๊ฑฐ๋ค.
- state๊ฐ ๋ฐ๋๋ฉด, ์๋ก์ด ๊ฐ์ ๊ฐ์ง๊ณ React๊ฐ ์ปดํฌ๋ํธ๋ฅผ refreshํด์ค๋ค.
3.4 State Functions
- ์ฌ์ฉ์๋ค์ input์ ์ด๋ป๊ฒ ์ป๋์ง
- form์ ๋ง๋ค์์๋ state๋ ์ด๋ค์์ผ๋ก ์์ฉํ๋์ง์ ๋ํด ๋ฐฐ์ธ๊ฑฐ๋ค.
- ์๋ํ๋ฉด ์ด์ ๊ป ๋ฐฐ์ด๊ฒ๋ค๋ก ์์ ํ๋ก์ ํธ๋ค์ ์ฒ๋ฆฌํ๋ ์ฐ์ต์ ํ ๊ฑฐ๋ค.
- ๋จผ์ ์ฑ์ state๋ฅผ ๋ฐ๊พธ๋ ๋ฒ์ ๋ํด์ ๋ฐฐ์ธ๊ฑฐ๋ค.
- ์ด์ฉ๋ฉด counter๊ฐ ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋ ๊ฐ์ด ์๋์ ์๋ค.(๋ค๋ฅธ ๊ณณ์์ ๋ณ๊ฒฝ๋์ด์)
- state๋ฅผ ๋ฐ๊พธ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ด ์๋ค.
- setCounter๋ฅผ ์ด์ฉํด์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ฑฐ๋ค.(์ง์ ๊ฐ์ ์ค์ ํด์ฃผ๋ ๊ฒ)
- ์ด๋ฐฉ๋ฒ์ด๊ธด ํ๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค.(ํจ์๋ฅผ ์ ๋ฌํ๊ธฐ)
- ์ด์ ๊ฐ์ ๋ฐํ์ผ๋ก ํ์ฌ ๊ฐ์ ์ค์ ํ๊ณ ์ถ๋ค๋ฉด,
- ์ด์ ์ด ํจ์๊ฐ ๋ญ returnํ๋์ง → ๊ทธ๊ฒ ์๋ก์ด state๊ฐ ๋๋ค.
- ๋๊ฐ ๋ค ํ์ฌ์ state๋ฅผ ๊ฐ์ง๊ณ ์๋ก์ด ๊ฐ์ ๊ณ์ฐํด๋ด์ง ํ์ง๋ง ์๋์ชฝ์ด ๋ ์์ ํ๋ค.
- ๋ฆฌ์กํธ๊ฐ ์ด current๊ฐ ํ์คํ ํ์ฌ ๊ฐ์ด๋ผ๋๊ฑธ ๋ณด์ฅํ๊ณ ์๋ค.
- ์ฐ๋ฆฌ๊ฐ ์ ํํ ์ํ๋ ๊ฐ์ผ๋ก ๊ณ์ฐํ ์ ์๋๋ก
- ํ์ฌ state๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ์ ํ๊ณ ์ถ๋ค๋ฉด, ํจ์๋ฅผ ์ด์ฉํ๋ ๊ฑฐ๋ค.
- ๋ค์ ๊ฐ์์์๋ unit์ converter(๋จ์ ๋ณํ๊ธฐ)์ ๋ง๋ค๊ฑฐ๊ณ
- unit converter๋ ๋ถ ๋จ์(minute)๋ฅผ ๋ฃ์ผ๋ฉด ๊ทธ๊ฑธ ์๊ฐ ๋จ์(hour)๋ก ๊ฐ์ ์ถ๋ ฅํด ์ฃผ๋ ๊ฑฐ๋ค.
- ex> 55km๋ฅผ ์ ๋ ฅํ๋ฉด ์ด๊ฒ ๋ช mile์ธ์ง ์ป์ด๋ด๋ ๊ฑฐ๋ค.
- ๋ money converter๋ ๋ฐฐ์ฐ๊ฒ ๋ ๊ฑฐ๋ค.
3.5 Inputs and State
unit conversion(๋จ์ ๋ณํ) ์ฑ์ ๋ง๋ค ๊ฑฐ๋ค.
๋ถ→ ์๊ฐ ๋จ์๋ก ๋ฐ๊พธ๋ ๊ฒ
- JSX๋ HTML๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค.
- label์ ์๋ค์ํผ input ์์ ์จ์ฃผ๋ ๊ธ์จ๋ค.
- input์ id๊ฐ ์์ด์ผ ํ๋ค.
- HTML์ for ์์ฑ์ ์ด์ฉํ๋ค.
- React์ธ๊ณ์์ ์ด๊ฑด ์์ ํ ํ๋ฆฐ ๊ฒ์ด๋ค.
- JSX์์๋ ๋ค๋ฅด๊ฒ ํํํด์ผ ํ๋ค.
- ์ฐ๋ฆฌ๋ HTML์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ ์๋๋ค.
- ??? JSX๋ HTML์ ์ด๋ป๊ฒ ๊ตฌ๋ณํ๋ ๊ฑฐ์ง?
- ๋จ์ถํค ๋๋ฅด๋ฉด ์๋ ์ ๋ฆฌ๋๋๊ฑฐ ์์๋ณด๊ธฐ
- development ๋ก ๋ฐ๊พธ๋ฉด
- ์ ํจํ์ง ์์ DOM property ‘for’์ด๋ผ๊ณ ํ๋ค.
- ์๋ก๊ณ ์นจํ๋ฉด ์ ํจํ์ง ์์ DOM property ‘for’์ด ์๋ค๊ณ ํ๋ค.
- ‘๋ ํน์ html for’์ ์๋ฏธํ๋ ๊ฑฐ๋ ?๋ผ๊ณ ๋ฌป๋๋ค.
- ์ ์ฐ๋ฆฌ๊ฐ for ๊ฐ์ ๋ช๊ฐ์ง ์ฉ์ด๋ค์ ์ฌ์ฉ์ ํ ์ ์๋๋ฉด
- for์ JavaScript ์ฉ์ด ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- class๊ฐ JavaScript์ฉ์ด์ด๊ธฐ๋ ํ ๊ฒ์ฒ๋ผ
- ๋ฌธ์
- class๋ฅผ ์ฌ์ฉํ ๊ฒ ์ฐ๋ฆฐ class๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค.
- for์ ์ฌ์ฉํ๋ฉด ์๋๋ค.
- JSX๋ HTML๊ณผ ๋น์ทํ์ง๋ง ๋ค๋ฅธ ์ ๋ช๊ฐ์ง ๊ธฐ์ตํ ๊ฒ ์๋ค.
- class X className ์ด๋ผ๊ณ ์จ์ค์ผ ํด
- for X → htmlFor์ด๋ผ๊ณ ์จ์ค์ผ ํ๋ค.
- for ์ด ๋ญ๋ฐ
- ์ด์ ๋ถํฐ ์ค์ minutes์ ํ์ํ state๋ฅผ ๋ง๋ค๊ฑฐ๋ค.
- react code๋ก minutes์ ์ด๋ค ์ซ์๋ฅผ ์ ์๋์ง ์ถ์ ํ ์ ์๋ค.
- ๋ฌธ์
- ์ ํ ์ซ์์ value๊ฐ ๋ญ์ง ๋ชจ๋ฅธ๋ค๋ ๊ฑฐ๋ค.
- React JS๋ก ํ๋ ๋ฒ์ ๋ฐฐ์ฐ์ง ์์๋ค.
- input์ uncontrolled๋ผ๊ณ ์๋ ค์ง
- ๊ทธ๋ง์ ์ฆ, ์ฌ๊ธฐ input์ value๋ ์ฐ๋ฆฌ๊ฐ ํต์ ํ ์ ์๋ค.
- useState๋ array๋ฅผ ์ ๊ณตํ๋ค ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฒซ๋ฒ์งธ element๊ฐ ํ์ฌ์ ๊ฐ์ด ๋๋ค.
- ๋ ๋ฒ์งธ element์ minutes๋ฅผ ์์ ํด์ฃผ๋ modifier(setMinutes) ํจ์๊ฐ ๋ค์ด๊ฐ๋ค.
- ๋ ๋ฒ์งธ๋ value๋ฅผ ์์ ํ๊ณ , component๋ฅผ ์๋ก๊ณ ์นจ ํ ๋ ์ฐ๋ ํจ์์ด๋ค.
- ์ด์ value๋ฅผ input์๊ฒ ์ค ์ ์๋ค.
- state์ ์๋ค๋ ๋ง์ด
- ํ๊ณ ์ถ์ ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๊ฐ์ ์
๋ ฅํ ๋๋ง๋ค ์ด value๋ฅผ ์
๋์ํค๋ ๊ฑฐ๋ค.
- ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋ ๊ทธ ์ด๋ฒคํธ๋ ๋ฐ๋ก “change”์ด๋ค.
- input์ value๋ state์ value์ ๊ฐ์์ง๋ ์ ์ด๋ค.
- input์ ๋ณํ๊ฐ ์๊ธธ ๋๋ง๋ค ๊ทธ ๋ณํ๋ฅผ ๋ฆฌ์ค๋ ํ๊ณ ์ถ๋ค.
- ๋ณํ๋, ์ฌ์ฉ์๊ฐ input์ ๋ญ๊ฐ๋ฅผ ์ ๋ ฅํ๋ ๊ฑธ ๋งํ๋ค.
- onChange๋ผ๋ event๋ฅผ ๋ฆฌ์ค๋ํ ๊ฑฐ๋ค.
- ์ ์ ๋ฒํผ์์ onClick์ ๋ฆฌ์ค๋ํ ๊ฒ์ฒ๋ผ
- input์ ๋ณํ๊ฐ ์๊ธฐ๋ฉด, onChange ํจ์๋ฅผ ์คํํด์ค๊ฑฐ๋ค.
- ์ด input์ ์
๋ ฅ๊ฐ์ ์๊ณ ์ถ๋ค.
- label์ input์ ์ฐ๊ฒฐํด์ฃผ๊ธฐ ์ํด์
- input์ id๊ฐ ์์ด์ผ ํ๋ค.
- Synehetic Event(ํฉ์ฑ ์ด๋ฒคํธ)๋ผ๋๊ฒ ๋ฌ๋ค.
- ์ด์ : React JS๊ฐ ๊ฐ์ง event๋ฅผ ๋ฐ์์ํจ๋ค.
- ์๋ค๋ event๋ฅผ ์ต์ ํ ์ํจ๋ค.
- ์๋์ event(native event) native JavaScript event (๋ด๋ถ์ )
- ์์ง๋ ์ฐ๋ฆฌ๊ฐ event์ ์ ๊ทผํ ์ ์๋ค.
- ์์ ๋ด์ฉ์์ ์ค์ํ๊ฑฐ๋ target์ด๋ค.
- target์ด๋ ๋ฐฉ๊ธ ๋ฐ๋ input์ ๋งํ๋ค.
- value์ ๋๋ฌํ๋ค.
- ์ฐ๋ฆฌ๊ฐ ํด์ผํ๋๊ฑด ์ด๋ค ๋ณํ๊ฐ ์ผ์ด๋ฌ๋ ์ซ์๊ฐ๋ ๊ฑฐ๋ค.
- event.target.value ์์
- document.getelement ์ด์ฉ๊ตฌ ํ ํ์
3.6 State Practice part One
- onChange์ ์ฃผ์์ ๋ฌด๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ ์์ผ์ฃผ๋ ๊ฒ์ด๋ค.
- event๊ฐ ๋ฐ์ํ์ ๋, ๊ฐ์ ์ ๋ฐ์ดํธํด์ฃผ๊ณ ,UI์ ๋ณด์ฌ์ฃผ๋ ๊ฒ ํ๋
- ์ ๋ฆฌํ๋ฉด ์ด state๋ฅผ 60์ผ๋ก ๋๋ ์ ๋ณด์ฌ์ค๋ค.
- ์๋ก ์ ๋ฐ์ดํธ ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์ด ๋ชจ๋ ์ฝ๋๊ฐ ๋ค์ ํ ๋ฒ rendered ๋๋ค
3.7 State Practice part Two
- flip (๋จ์ ๋ณํ์ ๋ค์ง์ด๋ณด๋ ํจ์(flip function)
- ์ผ๋ฐ์ ์ธ JavaScript ์กฐ๊ฑด๋ฌธ์ด๋ค.
728x90
๋ฐ์ํ