์ด์ ๋ถํฐ Webpack์ ์ด์ฉํด ๋ง๋ค์ด๋๊ณ ์ถ์๋ React ๋ณด์ผ๋ฌํ๋ ์ดํธ๋ฅผ ๋ง๋ค์ด๋ดค๋ค. ์ฌ๋ฌ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ๋ง๋ค์ด๋ดค๋๋ฐ ํ๋ฌ๊ทธ์ธ ๋ถํฐ ๋ก๋, ์ค์ ๋ด์ฉ๊น์ง ํ๋ํ๋ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ธฐ๋กํ๋ฉฐ ์ดํด๋ณด์. ํ์ฌ์ ๋ด๊ฐ๋ง๋ ๋ณด์ผ๋ฌํ๋ ์ดํธ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ๋ฑ์ด ์ ์ ์์ฌ๊ฐ๋ ๊ฑธ ๋ณด๋ฉฐ ํ๋ค์ง๋ง ๋ฟ๋ฏํ ์์ฆ์ด๋ค..โญ๏ธ Webpack ์ด๋? ์นํฉ์ ๋จ์ํ ๋งํ์๋ฉด ๋ชจ๋ ๋ฒ๋ค๋ฌ์ด๋ค. ๋ชจ๋ : ์นํฉ์์์ ๋ชจ๋์ ๊ฐ์ข
.js .css .png ๋ฑ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๋ ์์์ ๋งํ๋ค. ๋ฒ๋ค๋ฌ : ์์์ ์กฐํฉํด์ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋๋ ์ญํ ES2015๋ถํฐ ๋ชจ๋ ์ด๋ผ๋ ๋ฌธ๋ฒ์ ์ง์ํ๊ฒ ๋์๊ณ ์ด ๋ชจ๋์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ ๋ด๊ฐ ๋ง๋ ์ฝ๋๋ค์ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ๊ธฐ์กด์๋ ํ๊ทธ๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋ถ๋ฌ์ค๊ณ ..
React
์์ฆ Next.js๋ฅผ ์ฌ์ฉํ๋ฉฐ CSS-IN-JS ๋์์ด ์๋๋ ๋ฌธ์ ๋ก Tailwind CSS๋ฅผ ์์ฃผ ์ฌ์ฉํ๊ณ ์๋ค. VScode ์์ Tailwind CSS IntelliSense ๋ผ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ ๊ณตํด Tailwind์์ ์ ํด์ง ํฌ๋งท์ ๋ณด์ฌ์ฃผ์ง๋ง ์ฝ๊ฐ์ ๋ถํธํจ์ด ์๋ค. ์ค์ ์ ํตํด ํด๊ฒฐํด๋ณด์! Tailwind Tailwind๋ CSS ํ๋ ์์ํฌ๋ก ์์ฒญ๋๊ฒ ๋ง์ utility class๋ก ์ด๋ฃจ์ด์ง ํ๋ ์์ํฌ๋ค. ๋ง๋ค์ด์ ธ ์๋ utility class๋ฅผ class์ ๋ฃ์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ํด๋น ์คํ์ผ๋ง์ด ์ ์ฉ๋๋ค. ์ฌ์ฉ๋ฒ ์ค์น๋ฐฉ๋ฒ์ ๊ณต์ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์. ๊ณต์ํ์ด์ง๋ฅผ ๋ฐ๋ผ ์ค์นํ๋ค๋ฉด ์ฌ์ฉ๋ฒ์ ๋ณ๊ฑฐ ์๋ค. function App() { return ( ); } export default App; ์ ํด์ง uti..
ํ์ฌ์์ 4deps์ ์นดํ
๊ณ ๋ฆฌ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ผ ํ๋๋ฐ ์ฌ๊ท ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํด ๋ฐ๋ณต ์ฝ๋๋ฅผ ์ค์ผ ์ ์์์ต๋๋ค. 4deps๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก์์ง๋ง ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช deps๋ ๋ณด์ฌ์ค ์ ์์ฃ ! ์ฑ๋ฅ์ ์ธ ๋ฌธ์ ๋ ๋ณ๊ฐ์ง๋ง ๋ธ๋ผ์ฐ์ ์ ์ฑ๋ฅ์ด ๋ฐ๋ฌํ๋ฉด์ ์ด์ ๋๋ ๋ฌธ์ ๊ฐ ์๋ค ํ๋จํ์ต๋๋ค. ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ ์ฌ๊ท๋ ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก ์ฃผ๋ก ์ฝ๋ฉํ
์คํธ ๋ฌธ์ ๋ฅผ ํ ๋ ๋ง์ด ์ ํ ์ ์๋๋ฐ, ๊ฐ์ฅ ๋ํ์ ์ธ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ฌ๋ก๋ก๋ ํผ๋ณด๋์น ์์ด์ด ์๋ค. const fibonacci = (num: number) => { if (num < 2) { return num; } return fibonacci(num - 1) + fibonacci(num - 2); }; ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด "์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์"๋ฅผ ์ฌ๊ท ํจ์..
debnounce๋ ? - debounce๋ ์ฌ๋ฌ ๊ฐ์ ์์ฐจ์ ์ด๋ฒคํธ ํธ์ถ์ ๋ง์ง๋ง(๋๋ ์ฒ์) ํ๋์ ํธ์ถ๋ง ํ๋๋ก ํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ - ์ฃผ๋ก ๊ฒ์, ์คํฌ๋กค ๊ฐ์ ๋ฐ๋ณต์ ์ธ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๋ ์ฌ์ฉํ๋ฉฐ ์ ๋ช
ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ lodash๋ฅผ ์ค์นํ๋ฉด ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. - ๋ง์ฝ ํ์๊ฐ์
์์ ์ด๋ฉ์ผ์ ์ค๋ณตํ์ธ์ onChange ์ด๋ฒคํธ๋ก ์ฒดํฌํ๋ค๊ณ ํ์ ๊ฒฝ์ฐ ์ฌ์ฉ์์ ์
๋ ฅ๋ง๋ค API ํธ์ถ์ ํ๊ฒ ๋๋๋ฐ ์ด๋ฌ๋ฉด ๋์งํ ์๋ฒ ๋น์ฉํญํ์ ๋ง์ ์ ์๋ค. debouncing ์์ useEffect(() => { console.log(`http ์์ฒญ ${formData.email}`); }, [formData.email]); useEffect๋ฅผ ์ด์ฉํด email input์ด ์๋ฒ์ ๊ฐ์ ์์ด๋๊ฐ ์๋์ง ์ค๋ณตํ์ธ..
useState โญ๏ธ React์ state๋ ์ปดํฌ๋ํธ ๋ด๋ถ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ ํ ๊ฐ์ด๋ค. ํจ์ํ ์ปดํฌ๋ํธ์์ useState ํ
์ ์ฌ์ฉํด ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค. import React, { useState } from 'react'; function App() { const [number, setNumber] = useState(0); return ( {number} ); } export default App; React ํจํค์ง์์ useState๋ฅผ ๋ถ๋ฌ์ import ํ ์ฌ์ฉํ ์ ์๋ค. useState์ ์ธ์์๋ ์ด๊ธฐ๊ฐ์ ํ ๋นํ๋ค. (๋ถ๋ฆฌ์ธ์ด๋ ๋ฐฐ์ด, ๊ฐ์ฒด๋ ํ ๋น ๊ฐ๋ฅ) useState๋ ๋ฐฐ์ด์ ๋ฐํํ๋๋ฐ ์ด๋ ์ฒซ๋ฒ์งธ number๋ ์์์ ํ์ฌ ์ํ, ๋๋ฒ์งธ ์์๋ Setterํจ์๋ฅผ ๋ฐํํ๋ค. setState..
useLocation ํ
โญ๏ธ useLocation ํ
์ ํ์ฌ์ URL์ ๋ํํ๋ location '๊ฐ์ฒด' ๋ฅผ ๋ฐํํ๋ค. ๊ฐ์ฒด์์๋ pathname, search, hash, state, key ํ๋กํผํฐ๊ฐ ์กด์ฌํ๋ค. pathname : ํ์ฌ ์ฃผ์์ ๊ฒฝ๋ก (์ฟผ๋ฆฌ์คํธ๋ง, ํด์ ์ ์ธ) search : pathname ์ดํ์ ? ๋ถํฐ์ ๋ฌธ์์ด (์ฟผ๋ฆฌ์คํธ๋ง) hash : pathname ์ดํ์ # ๋ถํฐ์ ๋ฌธ์์ด (ํด์) state : location ๊ฐ์ฒด๋ก ํ๋ฉด์ด๋์ ์ํฌ ๋ ์ฝ๋ ์์ผ๋ก ๋ณด๋ด๋ ๊ฐ์ฒด key : history stack์์ location ๊ฐ์ฒด๋ฅผ ์ฐพ๊ธฐ ์ํ ๊ณ ์ ํค ์ฌ์ฉ๋ฒ import { useLocation } from 'react-router-dom' const Home = () => { co..
import { useState } from "react"; const useForm = (initialState = {}) => { const [formData, setFormData] = useState(initialState); const InputChangeHandler = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); }; return { formData, InputChangeHandler, }; }; export default useForm; Custom Hook์ ์ด์ฉํด form์ ๋ง๋ค๋ ์ฌํ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด๋ดค๋ค. ์ฐ์ initaialState์ Default ๊ฐ์ ๋น ๊ฐ์ฒด๋ก ๋ง..
๋ฉ๋ชจ์ด์ ์ด์
(memoization) ์ด๋?โญ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ๋ณต๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ ํด๋๊ณ ๋ค์์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋ ๋ค์ ๊ณ์ฐํ ํ์์์ด ๋นจ๋ฆฌ ์คํ ํ๋ ๊ธฐ๋ฒ์ด๋ค. JavaScript์์๋ ํด๋ก์ ๋ฅผ ํตํด ๊ณ์ ์ ์ง๋๋ ์ ์ฅ๊ณต๊ฐ์ ๋ง๋ค ์ ์๋ค. ๋ hooks ๋ ๋ฉ๋ชจ์ด์ ์ด์
์ ์ด์ฉํ ๋ฐฉ๋ฒ์ผ๋ก ๋ถํ์ํ ๋ ๋๋ง์ ๋ง์ ์ ์์ผ๋, ์ฌ์ฉ ์์ฒด๋ก๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋์ด ์ฑ์์ง๋ฏ๋ก ์ฌ์ฉํ๊ธฐ ์ ์ ์คํ ์๊ฐ ํด ๋ด์ผํ๋ค. useMemo ์ฌ์ฉ๋ฒ ๐ const memo = useMemo(() => { return blabla; },[list]) useMemo๋ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ๋๋ฒ์งธ ์ธ์๋ก ์์กด์ฑ(dependency) ๋ฐฐ์ด์ ๋ฐ๋๋ค. useMemo๋ list๊ฐ ๋ณํ๋ค๋ฉด ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๊ณ blab..