FA/React (16) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ 20221105 React Hooks - Custom Hooks ์ปค์คํ ํ Hook์ ๊ท์น React ํจ์ ๊ตฌ์ฑ ์์ ๋ด์์๋ง ํธ์ถํ ์ ์์(๋ฐ๋์ Functional Component ์์์ ์ฌ์ฉํด์ผ ํจ) ๊ตฌ์ฑ ์์์ ์ต์์์์๋ง ํธ์ถํ ์ ์์ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ์์์ ๋ชป ์ Custom Hook - ๋ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์์์ ๊ฐ์ ๋ก์ง์ ๊ณต์ ํ๊ณ ์ ํ ๋๋ ๋ ๋ค๋ฅธ ํจ์๋ก ๋ถ๋ฆฌ ํจ. - ์ค๋ณต๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ํจ์๋ก ๋ง๋ค์ด์ ์ค๋ณต์ ์ ๊ฑฐํ ์ ์์. - ์ปค์คํ ํ ๋ด๋ถ์์ ๋ค๋ฅธ ํ ๋ค์ ์์ ๋กญ๊ฒ ์กฐํฉ๊ฐ๋ฅ(ํ์ํ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ ์ถ๊ฐ ๊ฐ๋ฅ) - ์ปค์คํ ํ ๋ด๋ถ์์ ์ปค์คํ ํ ์ด ๊ฐ์ง๋ ์คํ ์ดํธ์ ์ดํํธ๋ ์์ ํ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ด ์์ฃผ ์ข์ use0000 ์ฒ๋ผ ๋ฐ๋์ ๋งจ ์์ use๋ผ๋ ๋จ์ด๋ฅผ ๋ถ์ฌ์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด Hook์ด๋ผ๋ ๊ฑธ ์ ์ ์๊ฒ ํด์ค.. 20221104 React Hooks - useReducer Hook์ ๊ท์น React ํจ์ ๊ตฌ์ฑ ์์ ๋ด์์๋ง ํธ์ถํ ์ ์์(๋ฐ๋์ Functional Component ์์์ ์ฌ์ฉํด์ผ ํจ) ๊ตฌ์ฑ ์์์ ์ต์์์์๋ง ํธ์ถํ ์ ์์ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ์์์ ๋ชป ์ useReducer - useState์ ๋์ฒดํจ์ - ์ฝ๋ฐฑ ๋์ ๋์คํจ์น๋ฅผ ์ ๋ฌ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ธํ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐ ํ๋ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ์ ์ต์ ํ ํ ์ ์์ - useReducer๋ฅผ ์ฌ์ฉํ ๋ ๋ค์์ ํ์๊ฐ์ ํฌํจํ๋ ๋ณต์กํ ์ ์ ๋ก์ง์ ๋ง๋๋ ๊ฒฝ์ฐ state๊ฐ ์ด์ state์ ์์กด์ ์ธ ๊ฒฝ์ฐ์ ๋ณดํต useState๋ณด๋ค useReducer๋ฅผ ์ ํธ reducer : state๋ฅผ ์ ๋ฐ์ดํธ ํด์ฃผ๋ ์ญํ dispatch: state ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์๊ตฌ action: ์๊ตฌ์ ๋ด์ฉ ๋์คํจ์น๋ก ์ก์ (์.. 20221103 React - ๊ฐ์๋ (Virtual DOM) DOM(Document Object Model) ์นํ์ด์ง์ ๋ค์ด๊ฐ ์๋ ๊ตฌ์กฐ๋ค์ ํธ๋ฆฌํํ๋ก ๊ตฌ์ฑํ ๊ฒ Virtual DOM (VDOM) ๊ฐ์๋ UI์ ์ด์์ ์ธ ๋๋ "๊ฐ์"์ ์ธ ํํ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ReactDOM๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด “์ค์ ” DOM๊ณผ ๋๊ธฐํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ . ์ด ๊ณผ์ ์ ์ฌ์กฐ์ (Reconciliation)์ด๋ผ๊ณ ํจ. - ๋ฆฌ์กํธ๋ ๊ฐ์๋์ ์ฌ์ฉํด์ ์ค์ ๋์ ์กฐ์ํ๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ๋ง๋ค์ด ์ค - ๊ฐ์๋์ ์ค์ ๋๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋ด๊ณ ์๋ ๋ณต์ฌ๋ณธ ๋ณต์ฌ๋ณธ: ์ค์ ๋์ด ์๋ ์๋ฐ์คํธ๋ฆฝํธ ๊ฐ์ฒด ํํ๋ก ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ฅ๋์ด ์์ (์ค์ ๋์ด๋ ๋๊ฐ์ ์๋ฆฌ๋จผ์ธ ์์ฑ์ ๊ฐ์ง๊ณ ์์) - ๋ธ๋ผ์ฐ์ ๋ฌธ์์ ์ง์ ์ ์ผ๋ก ์ ๊ทผ ๋ถ๊ฐ ๋ฆฌ์กํธ๋ ๋๊ฐ์ง ๊ฐ์ ๋์ ๊ฐ์ง๊ณ ์์ 1. ๋ ๋๋ง ์ด์ ํ๋ฉด ๊ตฌ์กฐ๋ฅผ ๋.. 20221102 React Hooks - useMemo, useCallback Hook์ ๊ท์น React ํจ์ ๊ตฌ์ฑ ์์ ๋ด์์๋ง ํธ์ถํ ์ ์์(๋ฐ๋์ Functional Component ์์์ ์ฌ์ฉํด์ผ ํจ) ๊ตฌ์ฑ ์์์ ์ต์์์์๋ง ํธ์ถํ ์ ์์ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ์์์ ๋ชป ์ useMemo, useCallback ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉ useMemo๋ ํน์ ๊ฒฐ๊ณผ๊ฐ์ ์ฌ์ฌ์ฉํ ๋ ์ฌ์ฉ useCallback์ ํน์ ํจ์๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉ memoization (๋ฉ๋ชจ์ด์ ์ด์ ) ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด์ด ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณตํด์ผ ํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํจ์ผ๋ก์จ ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณต ์ํ์ ์ ๊ฑฐํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค. ๋์ ๊ณํ๋ฒ์ ํต์ฌ์ด ๋๋ ๊ธฐ์ ์ด๋ค. - ์์ฃผ ํ์ํ ๊ฐ์ ์บ์ฑํด ๋์ด์ ๊ทธ ๊ฐ์ ๋ค์ ๊ณ์ฐํ๋๊ฒ .. 20221024 input type="file" ์ฉ๋ ์ ํํ๊ธฐ 1. ํ๋ก์ ํธ์ ์ฌ์ฉ์๊ฐ ๋์์ ์ ๋ก๋๋ฅผ ํ๋ ค๋ฉฐ ๋ฐฑ์๋์ ์๋ก ๋์์ ํฌ๊ธฐ๋ฅผ 200๋ฉ๊ฐ๋ก ์ ํ ํ ์ ์๋๋ก ํ๊ธฐ๋ก ํ์์. 2. ํผ๋ฐ์ดํฐ๋ฅผ ํฌ์คํธ๋ก ๋ณด๋ด๋๋ฐ, ๋ฑ๋ก๋ฒํผ์ ๋๋ ์๋ 200๋ฉ๊ฐ๊ฐ ๋์ผ๋ฉด ์๋ฟ์ผ๋ก ์๋ ค์ค ์ ์๋๋ก ์ฝ๋๋ฅผ ์ง๋ด. 3. ์ฝ์์ฐ์ด๋ด๊ฐ๋ฉฐ ํ์ผ ์ฌ์ด์ฆ๊ฐ ํฌ๋ก๋ฐ์ดํธ๋ก ๋์จ๋ค๋ ๊ฑธ ํ์ธํ๊ณ , 200๋ฉ๊ฐ๋ฅผ ํฌ๋ก๋ฐ์ดํธ๋ก ๋ฐ๊พธ๊ณ maxFileSize๋ก ์ ์ธํด์ค ๋ค์ ๋น๋์ค์ ์ฌ์ด์ฆ๊ฐ maxFileSize๋ณด๋ค ํด ๊ฒฝ์ฐ ์๋ฟ์ฐฝ์ผ๋ก ์๋ ค์ค. (๋ฑ๋ก๋ถ๊ฐ) // ๋์์ 200MB ํฌ๊ธฐ ์ ํ const [errorMsg, setErrorMsg] = useState(false); const [isSuccess, setIsSuccess] = useState(false); const validateSelec.. 20221008 video ์ฌ์ฉํ๊ธฐ https://developer.mozilla.org/ko/docs/Web/HTML/Element/Video : ๋น๋์ค ์ฝ์ ์์ - HTML: Hypertext Markup Language | MDN HTML ์์๋ ๋น๋์ค ํ๋ ์ด๋ฐฑ์ ์ง์ํ๋ ๋ฏธ๋์ด ํ๋ ์ด์ด๋ฅผ ๋ฌธ์์ ์ฝ์ ํฉ๋๋ค. ์ค๋์ค ์ฝํ ์ธ ์๋ ์ฌ์ฉํ ์ ์์ผ๋, ์์๊ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ข ๋ ์ ํฉํฉ๋๋ค. developer.mozilla.org src : ์ฌ์ํ ๋น๋์ค์ ์ฃผ์ width : ์์์ ๋๋น height : ์์์ ๋์ด loop : ๋ฐ๋ณต ์ฌ์ poster : ์ฌ์ฉ์๊ฐ ๋น๋์ค ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ํ์ผ์ ์ฃผ์๋ฅผ ๊ถ์ฅ preload : ์์ ์ ์ฌ์ํ๊ธฐ ์ ์ ๋ชจ๋ ๋ถ๋ฌ์ฌ์ง ์ง์ (value: auto, metadata, none).. 20221006 react JSX์์ for์ค๋ฅ Warning: Invalid DOM property `for`. Did you mean `htmlFor`? ๋ผ๊ณ ์ค๋ฅ๊ฐ ๋๋ค๋ฉด... JSX์์ for์ ๋ฐ๋ณต์ ์๋ฏธ๊ฐ ์์ผ๋ก htmlFor์ผ๋ก ์์ ํด์ฃผ๋ฉด ๋๋ค. // ์ด๋ ๊ฒ ๋ง๊ณ // ์ด๋ ๊ฒ ์จ์ฃผ์ 20221005 React Hooks - useContext useContext ์ฌ๋ฌ ๊ณณ์ ์ฐ์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ค์ฃผ๊ณ ์ถ์ ๋ ์ปดํฌ๋ํธ์ ๋จ๊ณ๊ฐ ๋ง๋ค๋ฉด ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํด์ Prop์ ๋ด๋ ค์ค์ผ ํ๋๋ฐ, ์ด๋ฐ ๋ฌธ์ ์ ์ ํ๋กญ ๋๋ฆด๋ง(Prop Drilling) ์ด๋ผ๊ณ ํจ. Context๋ ํ๋กญ ๋๋ฆด๋ง์ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ React Context๋ ์ ์ญ์ ์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ ์ ์ญ์ ํ๋กญ์ค๋ก ๋จ๊ณ์ ์ผ๋ก ํ๋ ค๊ณ ํ๋ค๊ณ ํ๋ฉด ํ๋ฌ ์ปจํ ์คํธ๊ฐ ์ฑ์์์ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋๋ก ํด์ค ์ ์ญ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ์ ํธํจ ์์์ปดํฌ๋ํธ์์ ํ์ํ ๊ฐ์ ๋จ๊ณ๋ก๋ณ๋ก ํตํ๋๊ฒ ์๋๋ผ ๋ฐ๋ก ๋๊ฒจ์ค ์ ์์ Context๋ก ๊ณต์ ํ๊ฑธ > useContext๋ก ๋ฐ๋ก ๋ฐ์์์ ์ธ ์ ์์ ๋จ์ ์ปจํ ์คํธ๋ ๊ผญ ํ์ํ ๋๋ง ์จ์ผ๋ ์ด์ - ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ด.. ์ด์ 1 2 ๋ค์