diff --git a/keyword/chapter05/keyword.md b/keyword/chapter05/keyword.md new file mode 100644 index 0000000..113fd13 --- /dev/null +++ b/keyword/chapter05/keyword.md @@ -0,0 +1,45 @@ +- useRef ๐ + + ํจ์ํ ์ปดํฌ๋ํธ ๋ด์์ DOM ์์๋ ๋ค๋ฅธ React ์์๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ Hook + + - ๊ธฐ๋ณธ ํํ + + ```jsx + const ๋ณ์๋ช = useRef(์ด๊ธฐ๊ฐ); + ``` + + ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ด๊ธฐ๊ฐ {current : ์ด๊ธฐ๊ฐ}์ ์ง๋ ๊ฐ์ฒด๊ฐ ๋ฐํ + + - ํน์ง + 1. ์ปดํฌ๋ํธ๊ฐ ๊ณ์ํด์ย **๋ ๋๋ง์ด ๋์ด๋**ย ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ด๋๋๊ธฐ ์ ๊น์ง๋ย **๊ฐ์ ๊ทธ๋๋ก ์ ์ง** + 2. **currnet ์์ฑ์ ๊ฐ์ ๋ณ๊ฒฝํด๋**ย ์ํ๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฒ๋ผย **React ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ ๋๋ง ๋์ง ์์ โ ์ฑ๋ฅํฅ์** + - useRef๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ + 1. ์ปดํฌ๋ํธ์ ๋ ๋๋ง๊ณผ ๊ด๋ จ์ด ์๋ ๊ฐ๋ค์ ์ ์ฅํ ๋ + 2. DOM ์์์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ ๋ + 3. ๋ ๋๋ง ๊ณผ์ ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด๋ ๋ค์ ๋ ๋๋ง๋์ง ์์๋ ๋๋ ๊ฒฝ์ฐ + +- input์ ์ฃผ์ ํ๋กํผํฐ ๐ + - ์๋ ๋ด์ฉ ์ด์ธ์, ์์ฃผ ์ฌ์ฉํ๋ ํ๋กํผํฐ๊ฐ ์์ผ๋ฉด ์ถ๊ฐ๋ก ๋ ์ ๋ฆฌํด์ฃผ์ธ์! ๐ + - **pattern**: ํน์ ์ ๊ทํํ์์ ์ ์ฉํ์ฌ ์ ๋ ฅ ๊ฐ์ ๊ฒ์ฌํจ + + ```html + + + + ``` + + - **autofocus**: ํ์ด์ง ๋ก๋ ์ ํด๋น ์ ๋ ฅ ํ๋์ ์๋์ผ๋ก ํฌ์ปค์ค๋ฅผ ์ค์ + + ```html + + + + ``` + + - **size**: ์ ๋ ฅ ํ๋์ ๋๋น(๊ธ์ ์ ๊ธฐ์ค)๋ฅผ ์ง์ + + ```html + + + + ``` \ No newline at end of file diff --git a/keyword/chapter05/loginPage.jsx b/keyword/chapter05/loginPage.jsx new file mode 100644 index 0000000..4798e1d --- /dev/null +++ b/keyword/chapter05/loginPage.jsx @@ -0,0 +1,33 @@ +import useForm from "../../../hooks/useForm.js"; +import './loginPage.css'; +import {validateLogin} from "../../../utils/validate"; + +const LoginPage = ()=>{ + const login = useForm({ + initialValue:{ + email: '', + password: '', + }, + validate: validateLogin + }) + return( +