์๋ ํ์ธ์, 4๋ ์ฐจ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํฌํ ํ ์ค์ ๋๋ค.
ํ์ฌ๋ ๊ธ๋ก๋ฒ ๋ชจ๋น๋ฆฌํฐ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ด์. ๋ค๊ตญ์ด ์๋น์ค๋ฅผ ๋ง๋ค๋ฉฐ ์ค๋ฌด ๊ฒฝํ์ ์์์๊ณ , ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ react-hook-form์ ๊ธ๋ก๋ฒ Top 30 ๊ธฐ์ฌ์์ด๊ธฐ๋ ํฉ๋๋ค.
ํ์ง๋ง ์ ๋ ์ฒ์๋ถํฐ ์ด๋ฌ๋ ๊ฑด ์๋์์.
JS๋ฅผ ์ฒ์ ๋ฐฐ์ธ ๋, ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฐ๋ผ ์น ๋๋ ๋ค ์ดํดํ ๊ฒ ๊ฐ์๋๋ฐ ๋ง์ ๋น ์๋ํฐ๋ฅผ ์ผ๋ฉด ๋จธ๋ฆฌ๊ฐ ์ํ์์ง๋ ๊ฒฝํ์ ์๋ ์์ด ํ์ต๋๋ค. ์ฒ์์ ๊ทธ์ ๊ตฌ๊ธ๋งํด์ ์ฐพ์ ์ฝ๋๋ฅผ ๋ณต์ฌํ๊ณ ๋ถ์ฌ๋ฃ๊ธฐ ๋ฐ๋นด๊ณ , ์๋ฌ๊ฐ ํฐ์ง๋ฉด ์ด๋์๋ถํฐ ์์ ๋์ผ ํ ์ง ๋ชฐ๋ผ ๋ฐค์ ์์ฐ๋ฉฐ ๋ฉฐ์น ์ ์ข์ ํ๊ธฐ๋ ํ์ด์.
๊ทธ ๊ณผ์ ์์ ์ ๋ง ๋ง์ด ํด๋งธ์ต๋๋ค. DOM์ด ๋ญ์ง๋ ๋ชจ๋ฅธ ์ฑ ์ฝ๋๋ฅผ ์งฐ๊ณ , ์ด๋ฒคํธ๊ฐ ์ ๋ ๋ฒ ์คํ๋๋์ง ๋ชฐ๋ผ ๋ช ์๊ฐ์ ๋ ๋ฆฌ๊ธฐ๋ ํ์ฃ . ๊ทธ๋์ ์ ๊ฐ ๊ฐ์ฅ ํ์ํ๋ ๊ฑด ๋ฐฉ๋ํ ๋ฌธ๋ฒ ์๊ธฐ๊ฐ ์๋์์ด์. "์ด ์ฝ๋๊ฐ ์ ๋์ํ๋์ง"๋ฅผ ์ค๋ช ํด์ฃผ๋ ๋๊ตฐ๊ฐ์์ต๋๋ค.
4๋ ๊ฐ ์ค๋ฌด๋ฅผ ๊ฑฐ์น๋ฉด์ ์์์จ ๊ฒ๋ค, ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ์ด๋ณด ์์ ๊ฐ์ฅ ํค๋งธ๋ ๋ถ๋ถ๋ค์ ์ ๋ฆฌํด์ ์ด ๊ฐ์๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ ์ฒ๋ผ ๋์๊ฐ์ง ์์ผ์ ๋ ๋ฉ๋๋ค. ์ ๊ฐ ๋จผ์ ๊ฒช์ด๋ดค์ผ๋๊น์.
Courses
Reviews
- Learn HTML + CSS for 10,000 won
- Intermediate JS for the Price of Chicken
- [E-book] Learn JavaScript for 10,000 Won โ From Syntax to Practical UI
Posts
Q&A
useState ์ง์ ๊ตฌํ ๋ถ๋ถ์์ ์ง๋ฌธ์ด ์์ต๋๋ค.
์๋ ํ์ธ์! ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :)ํท๊ฐ๋ฆด ์ ์๋ ์ง์ ์ ์ง์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๋จผ์ ํด๋น ์์ ๋ useState์ ๋ด๋ถ ์์ด๋์ด๋ฅผ ๊ฐ์ฅ ๋จ์ํ๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๊ฐ๋ ์ค๋ช ์ฉ ์๋์ฝ๋์ ๊ฐ๊น์ด ์์ ์์ต๋๋ค. ์ฆ, โ์ํ๋ฅผ ์ธ๋ถ์ ์ ์ฅํ๊ณ , setter๊ฐ ์ํ๋ฅผ ๋ฐ๊พผ ๋ค ๋ค์ render๋ฅผ ํธ์ถํ๋คโ๋ ํ๋ฆ์ ๋ณด์ฌ์ฃผ๋ ๋ฐ ์ด์ ์ ๋ ์ฝ๋์ ๋๋ค.๋ค๋ง ๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ, ์ด ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ๊ทธ๋๋ก ์คํํ๋ฉด setCount is not defined ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.๋ฌธ์ ๋ ์ด ๋ถ๋ถ์ ๋๋ค. return `${count}`;onclick="setCount(...)"๋ HTML ๋ฌธ์์ด ์์ ๋ค์ด๊ฐ ์ธ๋ผ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋๋ค.innerHTML๋ก DOM์ ๋ค์ด๊ฐ ๋ค ๋ฒํผ์ ํด๋ฆญํ๋ฉด, ๋ธ๋ผ์ฐ์ ๊ฐ ์ด ๋ฌธ์์ด์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ฒ๋ผ ์คํํฉ๋๋ค.์ด๋ setCount๋ฅผ Counter ํจ์ ๋ด๋ถ์ ์ง์ญ ๋ณ์๋ก ์ฐพ๋ ๊ฒ์ด ์๋๋ผ, ์ ์ญ(window) ์ค์ฝํ์์ ์ฐพ๊ฒ ๋ฉ๋๋ค.๊ทธ๋ฐ๋ฐ setCount๋ ์๋์ฒ๋ผ Counter ํจ์ ์์์ ๋ง๋ค์ด์ง ์ง์ญ ๋ณ์์ ๋๋ค.function Counter() { const [count, setCount] = useState(0); }๊ทธ๋์ ํด๋ฆญ ์์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ window.setCount๋ฅผ ์ฐพ๋ค ๋ชป ์ฐพ์ setCount is not defined ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ง์ ์ฃผ์ ๊ฒ์ฒ๋ผ ํฌ๊ฒ ๋ ๊ฐ์ง์ ๋๋ค.setCount๋ฅผ ๋ฐ๊นฅ ์ค์ฝํ์ ์ ์ธํด์ ์ ์ญ์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐaddEventListener๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ง์ ์ฐ๊ฒฐํ๊ธฐ์ธ๋ผ์ธ ๋ฌธ์์ด ํธ๋ค๋ฌ์ ์ ์ญ ์ค์ฝํ ๋ฌธ์ ๋ฅผ ํผํ ์ ์๊ณ , ์ด๋ฒคํธ ์ฝ๋ฐฑ์ด setCount๋ฅผ ํด๋ก์ ๋ก ๊ธฐ์ตํ๊ธฐ ๋๋ฌธ์ addEventListener๋ฐฉ์์ ์ด์ฉํ๋๊ฒ ๋ ์์ฐ์ค๋ฌ์ ๋ณด์ ๋๋ค. ใ ใ ์๋ฅผ ๋ค๋ฉด ๋ค์์ฒ๋ผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.// ์ ์ญ ๋ณ์๋ก ์ํ ์ ์ฅ ์๋ let _state; function useState(initialValue) { if (_state === undefined) { _state = initialValue; } const setState = (newValue) => { _state = newValue; render(); }; return [_state, setState]; } function Counter() { const [count, setCount] = useState(0); const root = document.querySelector("#root"); root.innerHTML = `${count}`; root.querySelector("#btn").addEventListener("click", () => { setCount(count + 1); }); } function render() { Counter(); } render();๊ฐ๋ ์ค๋ช ์ ์ํด ๋จ์ํํ๋ค ๋ณด๋, ์คํ ํ๊ฒฝ์ ์ค์ฝํ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ์ง ๋ชปํ๋ค์ ใ ใ ๊ฐ์ ์๋ฃ๋ addEventListener ๋ฐฉ์์ผ๋ก ๋ณด์ํ์ฌ ์ ๋ก๋ํ์์ต๋๋ค.(๋ค์ ๋ค์ด๋ก๋ ๋ถํ๋๋ฆฝ๋๋ค!)์ข์ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :)
- Likes
- 1
- Comments
- 1
- Viewcount
- 13
Q&A
ํ์ต์ ํ๊ณ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌ๋ฅผ ํด๋ ๊ด์ฐฎ์๊น์?
์๋ ํ์ธ์! ๊ฐ์๋ฅผ ์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :)๊ฐ์ ๋ด์ฉ์ด๋ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๊ฒ์ด ์๋, ์๊ฐ์๋์ด ์ง์ ์ดํดํ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฝํด์ ์์ฑํด ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์์ฑํ์ค ๋ ๊ฐ์ ์ถ์ฒ(๊ฐ์๋ช ๊ณผ ๋งํฌ)๋ ํจ๊ป ๋จ๊ฒจ์ฃผ์๋ฉด ๋์ฑ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค ๐
- Likes
- 1
- Comments
- 1
- Viewcount
- 20







![Thumbnail image of the [E-book] Learn JavaScript for 10,000 Won โ From Syntax to Practical UI](https://cdn.inflearn.com/public/files/courses/341941/cover/ai/2/e0025a6d-4834-4f34-891e-efcc6184d390.png?w=148)