Today, What I learned? ํ๋ก ํธ์์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ด๋ป๊ฒ ํ ์ ์์ ๊ฒ์ธ๊ฐ?๋ฅผ ์์ ๊ณ ๋ฏผํ๊ณ ์ฐพ์๋ณด๊ณ , ์ฌ๋ฌ ๊ธ๋ค์ ์ฝ์ด๋ณด๊ณ ์๋ค. ๊ทธ ๋ฐฉ๋ฒ ์ค ํ๋์ธ ๋ถํ์ํ ๋ ๋๋ง ์ค์ด๊ธฐ!.. ๋ ๋๋ง์ ์ค์ด๋ ๋ฐฉ๋ฒ ์ค ํ๋์ธ memoization์ ๋ํด ์ ๋ฆฌํด ๋ณธ๋ค. memoization memoization์ ๋ฆฌ์กํธ์๋ง ํด๋น๋๋ ๊ธฐ์ ์ ์๋๋ค. ์ปดํจํฐ๊ฐ ๋์ผํ ๊ณ์ฐ ์์ ์ ๋ฐ๋ณตํด์ผ ํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ๋๊ณ ์ฌ์ฉํ์ฌ ์๋๋ฅผ ๋์ด๋ ๊ธฐ์ ์ด๋ค. ์ฝ๊ฒ ๋งํด์ ๋ฐ๋ณต ์์ ํด์ผ ํ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฅผ ํด๋๊ณ ๊ฐ์ ธ๋ค ์ฐ๋ ๋๋? ๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํ๋ฅผ ์ํด์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๋ฆฌ์กํธ์์์ memoization ๋ฐฉ๋ฒ์ ํฌ๊ฒ ์ธ ๊ฐ์ง. React.memo, useMemo, useCallba..
Today, What I learned? ์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค๊ฐ null๊ฐ์ด ํฌํจ๋์ด์ ์๋ ๋๋ ๊ธฐ๋ฅ์ด ์ ๋๋(!) ์ผ์ด ๋ฐ์ํ๋ค. ๋ฐ๊ฒฌํ์ ๋ถ์ด ๋ฐ๋ก ํด๊ฒฐํด ์ฃผ์ จ์ง๋ง, ๋ง์นจ ๊ทธ ๋ถ๋ถ์ด useEffect๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด๊ณ .. ๋ด๊ฐ useEffect์ ์คํ ์์ ์ ๋ํด์ ์๋ชป ์๊ณ ์์๋ ๊ฒ ๊ฐ์ ์ ๋ฆฌํ๋ค! useEffect์ ์คํ ์์ ๋๋ ๊ธฐ์กด์ useEffect๊ฐ ์ ์ผ ๋จผ์ ์คํ๋๋ค๊ณ ์๊ฐํ์๋๋ฐ, (์ ํํ ์์๋์ง๋?..๐ค) useEffect ๊ฐ์ ์ฌ์ด๋ ์ดํํธ๋ jsx๊ฐ ๋ค์ด์๋ return๋ฌธ์ด ๋๋๊ณ ์คํ๋๋ค. ์๋์ ๊ฐ์ด ์ฝ์์ ์ถ๊ฐํด์ ํ์ธํด๋ณด๋ ๋ค์ ์๊ฒ ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋๋ return๋ฌธ์ด ๋จผ์ ์คํ๋๊ณ useEffect์ ์ฝ์์ด ์ฐํ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค. co..
Today, What I learned ํํฐ๋์ ์์ธํ!.. ๊ฑฐ์ ์ ์ ํ ์คํธ ๊ธ์ ํผ๋๋ฐฑ์ ํตํด ๋ฐ๊ฒฌํ ๋ฒ๊ทธ.. ๋ฒ๊ทธ ํด๊ฒฐ ๊ณผ์ ์ ๊ธฐ๋กํด ๋ณธ๋ค. ํ์ฌ ๋ด๊ฐ ์์ ํ ๋ง์ดํ์ด์ง์๋ ์ด๋ฐ ๋ฒ๊ทธ๊ฐ ์๋ค. ๊ธฐ์กด ์ ์ ์ ๋ณด์ ๋ฌ๋ผ์ก์ ๋๋ง ๋ฒํผ์ ํ์ฑํ์์ผ์ผ ํ๋๋ฐ, ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ทธ ๋ถ๋ถ์ ๋นผ๋จน์ด์.. ์์ ํ๋๋์ ์ฌ๋ถ์ ์๊ด์์ด ๊ณ์ํด์ ์๋ฒ์๊ฒ ์์ฒญ์ ํ ์ ์๋ ์ํ์๋ค!!... ((OMG)) ์ด๋ฐ ์๋ฏธ ์๋ ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ๋ง๋ ์ผ์ด์ผ๋ง๋ก ํ๋ก ํธ์๋๋ก์ ํด์ผ ํ ์ผ... ๐ State ์ถ๊ฐํ๊ธฐ ํด๊ฒฐ์ ์ํด ์ด๊ธฐ ๋ ๋๋ง ์ ์ ์ฅ๋ ์ ์ ์ ์ ๋ณด๋ฅผ ๋ฐ์์ฌ state๋ฅผ ํ๋ ๋ง๋ค์๋ค. const [defaultUserInfo, setDefaultUserInfo] = useState(defaultInfo); ์ข ์ฌ..
Today, What I learned? ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ ์ฉ๋์ด ์๋ ์ฝ๋๋ถํ ์ ๋ํด์ ์์๋ณด๋ ค ํ๋ค. ๋ด๊ฐ ์ ์ฉํ ๋ถ๋ถ์ด ์๋์๊ณ , ๋๋ ์ฒ์ ์ ํ ๊ฒ์ด๋ผ ์์ง ์์ํ ๋ถ๋ถ!... ๋ฆฌ์กํธ ๊ณต์๋ฌธ์์๋ ์ด ๋ถ๋ถ์ด ์ ์ค๋ช ๋์ด ์๋ค. https://ko.reactjs.org/docs/code-splitting.html ์ฝ๋ ๋ถํ – React A JavaScript library for building user interfaces ko.reactjs.org ์ฝ๋ ๋ถํ ์ ์ฑ์ ์ง์ฐ๋ก๋ฉ(lazy loading) ํ ์ ์๋๋ก ๋์์ค๋ค. ์ฌ์ฉ์๊ฐ ํ์ํ ์ฝ๋๋ฅผ ๊ทธ๋๊ทธ๋ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ์ ํ์ํ ์ฝ๋๊ฐ ์ค์ด๋ค๊ณ , ์ฑ๋ฅ ํฅ์์ ๋ง์ ๋์์ด ๋๋ค. React.lazy React.lazy ํจ์๋ฅผ ์ด์ฉํด์ ..
Today, What I learned? ์ง๋ ๊ธ์ด ๊ธธ์ด์ ธ์ ์ด์ด์ ์์ฑํ๋ ํ๋ก์ ํธ ๋ฆฌ์คํธ ํํฐ๋ง ์ฌ์ ~ ์ค๋์ 3์ค ์ค์ฒฉ ๊ฐ์ฒด์ ๊ฐ์ ํตํด ํ๋ก์ ํธ๋ฅผ ํํฐ๋งํ๋ ๊ณผ์ ์ ๋ํด ๊ธฐ๋กํ๋ค. ์ฌํ๊ป.. ์ค์ฒฉ ๊ฐ์ฒด๊น์ง ๊ฒช์ด๋ดค์ง๋ง 3์ค์ผ๋ก ์ค์ฒฉ๋.. ๊ทธ๋ฌ๋๊น ์ค์ฒฉ์ ์ค์ฒฉ์ ์ค์ฒฉ ๊ฐ์ฒด๋ ์ฒ์์ด๋ผ ์ฝ์ง์ ์ข ํ๋ค. ๊ทธ๋๋ Promise ๋ฐฐ์ด๋ณด๋จ ๋นจ๋ฆฌ ํด๊ฒฐํจ ใ ์ผ๋จ ์ต์ข ๋ณธ์ ์ด๋ ๋ค. ๊ธฐ์ ๋ง์์ผ๋ก gif๋ฅผ ๋ง๋ค์๋ค ^^.. ์ด ๋ ์์ 3 ์ค์ฒฉ ๊ฐ์ฒด ์ง์ํ, ์ฐธ์ฌํ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ํ๋ก์ ํธ ์์ด๋๋ก ๋ฌธ์(๊ฐ์ฒด)๊ฐ ๋ง๋ค์ด์ง๊ณ , ๊ทธ ์ ๊ฐ์ฒด์ recruited ๋ผ๋ ํค๊ฐ์ ํตํด ํ๋ณ๋๋ค. ์๋์ฒ๋ผ true/false์ ๋ฐ๋ผ ๊ฐ๋ฆฐ๋ค. appliedProjects๋ผ๋ ๊ฐ์ฒด ์์ ๊ฐ ๋ฌธ์ ์์ด๋๋ผ๋ ๊ฐ์ฒด ์์ recruite..
Today, What I learned? ๋ง์ดํ์ด์ง์ ํด๋น ์ ์ ํ๋ก์ ํธ ๋ฆฌ์คํธ๋ฅผ ํํฐ๋งํ๊ธฐ ์ํ ๊ธด ์ฌ์ .... ๋๋ฅผ ๋น๊ธ ๋์๋ฒ๋ฆฌ๊ฒ ๋ง๋ค์๋ Promise์ ํด๊ฒฐํ ์ ์์๋ Promise.all์ ๋ํด ์์๋ณธ๋ค. ๋ฐ๋จ, Promise ๋ฐฐ์ด ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์กฐ๊ธ ๋ณต์กํ ํธ์ธ๋ฐ.. ๋ง์ดํ์ด์ง์์์ ํ๋ก์ ํธ ๋ฆฌ์คํธ๋ ํ์ฑํ๋ ์นดํ ๊ณ ๋ฆฌ์ ๋ฐ๋ผ์ ๊ทธ์ ํด๋นํ๋ ํ๋ก์ ํธ๋ค์ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ค. ์ฐธ์ฌํ ํ๋ก์ ํธ๋ผ๋ฉด ์ง์ํ ํ๋ก์ ํธ๋ง ๋ณด์ฌ์ฃผ๋ ์.. ๋ญ ์ฌ๊ธฐ๊น์ง์ผ ๋ณดํต์ ํํฐ๋ง์ด์ง ์๋? ์ถ์ ์ ์์ง๋ง ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ ์ป์ด์จ ๊ฐ๊ฐ์ ๋ฌธ์์์ด๋ ๋ฆฌ์คํธ๋ฅผ ํตํด์ ๊ฐ๊ฐ์ ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ๋ค์ ์กฐํํด์ผ ํ๋.. ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค. ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ด๋ฐ๊ฐ์?๋ผ๊ณ ๋ฌป๋๋ค๋ฉด ์ฐ๋ฆฌ ํ์ ๋ชจ๋ ํ..
Today, What I learned? ํ๋ก์ ํธ์ ๊ณต์ฉ ๋ชจ๋ฌ์ ํ์ฉํ๋ ค๊ณ ํ์ง๋ง ๐ ๊ทธ๋๋ ํ์ฉํ ์ ์๋ ํํ๋ผ ๋ ๋ค๋ฅธ ์ปค์คํ ๋ชจ๋ฌ์ ๋ง๋ค์ด ๋ณด๊ธฐ๋ก ํ๋ค. ๋๋ถ์ด ๊ณต์ฉ ๋ชจ๋ฌ์ ์ด๋ป๊ฒ ๋ง๋ค ์ ์์์ง?? ์ง๋ ํ๋ก์ ํธ์์ ๋ง์ด ๊ณ ๋ฏผํ์๋๋ฐ ์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋ฉ์ง๊ฒ ๊ตฌํํด ์ค ํ์ ๋ถ์ด ์์ด์!.. ๋ง์ด ๋ฐฐ์ ๋ค ๐ ๊ทธ๋์ ์ค๋์ ๋ชจ๋ฌ์ ๋ํด ์ ๋ฆฌํด ๋ณธ๋ค. useModal hook ๋ชจ๋ฌ์ ๊ณตํต์ ์ผ๋ก ์ฐ๋ ค๋ฉด ์ผ๋จ ๋ชจ๋ฌ์ด ์ด๋ฆฌ๊ณ ๋ซํ๋ ์ํ๋ฅผ ๊ด๋ฆฌํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํด์ ๋ณดํต ์ปค์คํ ํ ์ผ๋ก ๋ชจ๋ฌ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ์ํ๋ฅผ ๋ณ๊ฒฝํด ์ฃผ๋ ํจ์ ๊ฐ์ ๊ฒ์ ๋ง๋ค์ด์ฃผ์ด ๊ด๋ฆฌํ๋ค. ๋ ์ฌ๊ธฐ์ onClick ์ด๋ฒคํธ๋ onChange ์ด๋ฒคํธ์ฒ๋ผ ํ์ํ ๊ฒ๋ค์ ์ถ๊ฐํด ์ค๋ค. const useModal = (initial..
Today, What I learned? ๋ผ๋์ค ๋ฒํผ๊ณผ ์ฒดํฌ๋ฐ์ค์ ์ํ ์ ์ง๋ฅผ ์ํ ๊ณ ๋ฏผ์ ๊ณผ์ ์ ๊ธฐ๋กํด ๋ณธ๋ค!.. ๋จ์ํ ๊ฐ์ ๋ฃ์ด state๋ฅผ ๋ณ๊ฒฝํด ์ฃผ๋ ๊ฒ์ด ์๋๋ผ, ์ด์ ์ํ ์ค๋ ์ท์ ์ด์ฉํด์ state๋ฅผ ๋ณ๊ฒฝํ๋ ๋ก์ง์ ์จ๋ณด๊ฒ ๋์ด ์ข์๋ค. ์ฒซ ๋ฒ์งธ ์๋ ๋ผ๋์ค ๋ฒํผ const [isJuniorChecked, setIsJuniorChecked] = useState( user?.isJunior, ); const [checkedPositions, setCheckedPositions] = useState( user?.positions, ); ๋ผ๋์ค ๋ฒํผ์ ๋ค์ด๊ฐ onChange ์ด๋ฒคํธ. const handleCheckedRadioChange = useCallback( (e: React.ChangeE..
Today, What I learned? ๋ง์ดํ์ด์ง ๊ตฌํ ์ค!.. ๋ง์ดํ์ด์ง ์ ์ ์ ๊ฐ์ ธ์ค๋ ์ ์ ์ ๋ณด๋ฅผ ๋ ๋๋ง ํด์ฃผ๋ ๊ณผ์ ์์ ๊ธฐ์ ์คํ ๋ฐ์ดํฐ๋ฅผ ํธ๋ค๋งํ๋ ์ค์ ๋งํ๊ณ ๋ง์๋ค. ๊ฐ๋ฐ ๊ธฐ์ ์คํ์ ์ ๋์ค๊ณ ์์ง๋ง ํฌ์ง์ ๊ณผ ์๊ด ์์ด ๊ธฐํ, ๋์์ธ ๋ถ๋ถ์ด ์ค๋ณต๋์ด ๋ํ๋ฌ๊ธฐ ๋๋ฌธ..๐จ๐จ๐จ (NOOOOOooo...) ์ ์ฌ์ง์์๋ ์๋ ธ์ง๋ง ๋์์ธ, ํ๋ก ํธ์๋๊ฐ ์ ํ๋์ด ์๋ ์ํ์๋ค. ์ํ๋ ๋๋ก ๋๋ ค๋ฉด ์ ์ ์ ์ ํ๋ ํฌ์ง์ ์ ๋ฐ๋ผ์ ๊ตฌ๋ถ๋ ํ์๊ฐ ์๊ณ , ์ ์ ๊ฐ ๊ธฐํ์ด๋ ๋์์ธ ๋ ์ค ํ๋๋ฅผ ์ ํํ๋ค๋ฉด ํด๋น ํฌ์ง์ ์ ์คํ์ด ํ์ฑํ๋๋๋ก ํด์ผ ํ๋ค!.. ๊ธฐ์กด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์๋ค. {skills.map((skill: string) \=> { const isChecked \= checkedSkills?.inc..
Today, What I learned? UI๋ฅผ ๋จผ์ ์์ ํ๋ฉด์ input ํ๊ทธ ์ค ์ฒดํฌ๋ฐ์ค์ ๋ผ๋์ค๋ฒํผ์ ์ปค์คํ ํด์ผ๊ฒ ๋ค ์๊ฐ์ด ๋ค์๋๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์กํ์๋ UI๋ฅผ ๋ ๋ฆฌ๋ฉด์ ์ด๋ป๊ฒ ๋์์ธ๋๋ก ๊ตฌํํ ๊ฒ์ธ์ง์ ๋ํ ์ฝ์ง ์๊ฐ์ด ์ข ๊ธธ์๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ์ปค์คํ ์ ์ฑ๊ณตํ๊ณ ์ด๋ป๊ฒ ํด๋์๋์ง ๊ธฐ๋กํด๋ณด๋ ค ํ๋ค!.. ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ์ด๋ชจ์ ์ ์ฐ๊ณ ์์ง๋ง Styled-components ํ์๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉ ์ค์ด๋ผ๋ ์ .. input type='radio' ์์ฑ๋ ๋ชจ์ต์ ์ด๋ ๋ค. ์ด๋ป๊ฒ ์ปค์คํ ์ ํ ๊ฒ์ด๋? ๋ผ๋ฒจ์ htmlFor์ ์ธํ์ name์ด ๋์ผํ ๊ฒฝ์ฐ ๋ผ๋ฒจ์ ๋๋ฅด๊ธฐ๋ง ํด๋ ์ธํ์ด ๋์๋๋ค๋ ์ ์ ์ด์ฉํ ๊ฒ์ด๋ค. {career.map((career) => ( {career.name} ))} ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์..
Comment