์ด๋ค ์๋ฌ? ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋ด๋ ค์ค props๋ฅผ ๋ฟ๋ ค์ฃผ๋ค๊ฐ input ๊ด๋ จ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. Warning: A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. ์์ธ ํ์ ์์ ์ฝ์๋ค์ ๋ณด๋ ํ์ด์ง ์ง์ ์์๋ ๊ด์ฐฎ์๋ฐ, ์๋ก๊ณ ์นจ ํ์ ๋ uid๋ฅผ ๊ฐ์ ธ์ค๋ ์๊ฐ์ด ์์ด userDat..
Today, What I learned? UI๋ฅผ ๋จผ์ ์์ ํ๋ฉด์ input ํ๊ทธ ์ค ์ฒดํฌ๋ฐ์ค์ ๋ผ๋์ค๋ฒํผ์ ์ปค์คํ ํด์ผ๊ฒ ๋ค ์๊ฐ์ด ๋ค์๋๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์กํ์๋ UI๋ฅผ ๋ ๋ฆฌ๋ฉด์ ์ด๋ป๊ฒ ๋์์ธ๋๋ก ๊ตฌํํ ๊ฒ์ธ์ง์ ๋ํ ์ฝ์ง ์๊ฐ์ด ์ข ๊ธธ์๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ์ปค์คํ ์ ์ฑ๊ณตํ๊ณ ์ด๋ป๊ฒ ํด๋์๋์ง ๊ธฐ๋กํด๋ณด๋ ค ํ๋ค!.. ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ์ด๋ชจ์ ์ ์ฐ๊ณ ์์ง๋ง Styled-components ํ์๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉ ์ค์ด๋ผ๋ ์ .. input type='radio' ์์ฑ๋ ๋ชจ์ต์ ์ด๋ ๋ค. ์ด๋ป๊ฒ ์ปค์คํ ์ ํ ๊ฒ์ด๋? ๋ผ๋ฒจ์ htmlFor์ ์ธํ์ name์ด ๋์ผํ ๊ฒฝ์ฐ ๋ผ๋ฒจ์ ๋๋ฅด๊ธฐ๋ง ํด๋ ์ธํ์ด ๋์๋๋ค๋ ์ ์ ์ด์ฉํ ๊ฒ์ด๋ค. {career.map((career) => ( {career.name} ))} ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์..
Today, What I learned? ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํจํค์ง ๊ด๋ฆฌ ์์คํ Yarn Berry์ ๋ํด์ ์ ๋ฆฌํด ๋ณธ๋ค. Yarn Berry๋ ํ์ฌ ํ ์ค ํ๋ก ํธ์๋ํ์์๋ ์ฌ์ฉ ์ค์ธ ํจํค์ง ๋งค๋์ !.. Yarn Berry ? ๊ฐ์ฅ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋ npm์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๋ฌธ์ ์ ์ด ์๋ค. ๋นํจ์จ์ ์ธ ์์กด์ฑ ๊ฒ์ (๋ชจ๋ ํจํค์ง๋ฅผ node_modules ๋ด๋ถ์์ ํ์ํจ) ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์ (์ด๋ค node_modules๋ฅผ ํฌํจํ๊ณ ์๋๋์ ๋ถ๋ฌ์ฌ ์ ์๋ ์์กด์ฑ์ด ๋ค๋ฅด๋ค.) ํฌ๊ณ ๋ณต์กํ node_modules ๊ตฌ์กฐ ๋ฑ๋ฑ.. Yarn Berry๋ ์ด๋ฐ ๋ฌธ์ ๋ค์ Plug'n'Play๋ผ๋ ์ ๋ต์ ํตํด ํด๊ฒฐํ๋ค. ๊ด๋ จํด์๋ ํ ์ค ๊ธฐ์ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌ๊ฐ ์์ฃผ ์ ๋์ด์๋ค!.. https://toss.tech/..
Today, What I learned? ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฐ์ ๊ธฐ์ ์คํ์ ํ๋์ฉ ๋งก์์ ์ด๋ค ์คํ์ ์ ํํ๋ฉด ์ข์์ง ๊ณ ๋ฏผํด ๋ณด๋ ๊ธ์ ์์ฑํด ๋ณด๊ธฐ๋ก ํ๋ค. ๋๋ ์คํ์ผ๋ง๊ณผ ๊ด๋ จํ์ฌ Emotion, Styled-Component, SCSS๋ฅผ ๋น๊ตํด ๋ณด์๋๋ฐ ์ข ๋ค๋ฌ์ด์ ์ฌ๋ ค๋ณธ๋ค. ๐ฅ Emotion vs Styled-components ๐ ๊ธฐ๋ฅ ๋น๊ต ์ ๋ฐ์ ์ผ๋ก ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ฅ์ ๊ฑฐ์ ๋น์ทํ๋ค๊ณ ๋ณผ ์ ์๋ค. ์ฐธ๊ณ : https://github.com/jsjoeio/styled-components-vs-emotion GitHub - jsjoeio/styled-components-vs-emotion: a short doc comparing the popular CSS-in-JS libraries s..
2์ ์ฒซ์งธ ์ฃผ๋ฅผ ๋ณด๋ด๋ฉฐ ํ๋ก์ ํธ๋ ๋๋๊ณ next.js๋ฅผ ์ด์ง ๊ณต๋ถํด ๋ณด๋ ํ ์ฃผ๋ฅผ ๋ณด๋๋ค. ๊ทธ๋ฆฌ๊ณ 2์์ด ๋์๋๋ฐ..... (์ ๋ฒ์จ) ์ ๋ง ๋ ๊น์งํ ์ ํ๋ฌ์ด ๊ฐ๋ ๊ฒ ๊ฐ๋ค ^^.. ์ด์ ์ต์ข ํ๋ก์ ํธ๋ง์ด ๋จ์๋ค ใ ใ ๐ Fact ํ๋ก์ ํธ๋ฅผ ์ ๋ง๋ฌด๋ฆฌํ๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์์ธํ์ด์ง ๋งํฌ ๋ฌธ์ ์ ์ค๋ง๋ฆฌ๋ฅผ ์ฐพ์๋ค. ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐํ์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ค. next.js๋ฅผ ์ด์ง ๊ณต๋ถํ๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ฆฌํฉํ ๋ง ํ๋ ํฌ๋๋ฆฌ์คํธ๋ฅผ recoil๋ก ๋ฆฌํฉํ ๋ง ํ๋ค. ์ฑ๋ฆฐ์งํ ํ์๋ฅผ ํ๋ค. ๐ Feeling ํ๋ก์ ํธ๊ฐ ์ ๋ง๋ฌด๋ฆฌ๋์ด ๋คํ์ด๋ค!.. ์์ธํ์ด์ง ๊ด๋ จํด์ ํํฐ๋์ ์ฐพ์๊ฐ ๋ณด๋์ด ์์๋ค! ์๊ฐ ๋๋ํ ๋ ๊ผญ ๋ฆฌํฉํ ๋ง ํด๋ด์ผ์ง ์ง๋ ๋ค์ดํฐ๋ธ ํ๋ก์ ํธ ๋ ์ฐ๋ฆฌ ํ์ ์ฝ๋๋ฆฌ๋ทฐ๊ฐ ์์๋๋ฐ ์ด๋ฒ์ ๋ฐ์์ ์ข์์! ne..
Today, What I learned? ์ฝ๋๋ฆฌ๋ทฐ ํผ๋๋ฐฑ ์ค ํ๋์๋ ์๋๊ฒฝ๋ก๋ฅผ ์ ๋๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํด ๋ณด๊ธฐ ๋์ ๊ณผ์ ์ ๊ธฐ๋กํด ๋ณธ๋ค.. ๐ ํ์ ์คํฌ๋ฆฝํธ์ CRA๋ก ๋ง๋ค์ด์ง ํจํค์ง๋ค๋ณด๋ ๋ณ๊ฒฝํด ๋ณด๊ธฐ๊ฐ ๋ ์ฌ๊ฐ ์ฌ์ด ์ผ์ด ์๋์๋ค!.. ์ฒซ ์๋ ์ฒ์์ tsconfig.json์ baseUrl๊ณผ paths๋ฅผ ์ถ๊ฐํด์ฃผ์๋ค. ํ์ง๋ง CRA๋ก ์์ฑ๋ ํ์ ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์ธ์ง๋ผ ๋จ์ํ tsconfig.json์ ๋ช๋ช ์ค์ ์ ์ถ๊ฐํด ์ฃผ๋ ๊ฒ์ผ๋ก ๋๋์ง ์์๋ค. { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } ... } } ์๋!.. CRA๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๊ฒฐํ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ํด ์นํฉ ์ค์ ์ด ๋ค์ด์๋ ํ์ผ๋ค์ ์จ๊ฒจ๋๊ณ ์๋ค. ์ด ํ์ผ๋ค์ ์ปค์คํ ํ..
Today, What I learned? ํ์ ์คํฌ๋ฆฝํธ์ ๋ฆฌ๋์ค ํดํท์ผ๋ก ๋ฆฌํฉํ ๋ง ํ๋ ํฌ๋๋ฆฌ์คํธ๋ฅผ ๋ฆฌ์ฝ์ผ๋ก ํ๋ฒ ๋ !.. ๋ฆฌํฉํ ๋งํด๋ณด์๋ค. (์ตํ๋ณด๊ธฐ์ ํฌ๋๋ฆฌ์คํธ๋งํ ๊ฒ์ด ์๋ค..) ๋ฆฌ์ฝ์ผ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด๋ณด๊ณ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ ๊ธฐ๋กํ๋ค. Recoil ๋ฆฌ์ฝ์ผ์ facebook์์ ์ถ์ํ ๋ฆฌ์กํธ๋ฅผ ์ํ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๋ง์ด๋ค ์ฌ์ฉํ๋ ๋ฆฌ๋์ค๋ณด๋ค ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๊ฐ ์ ๊ณ , ์ก์ , ๋ฆฌ๋์, ๋์คํจ์น.. ์ ๊ฐ์ด ์์์ผ ํ ๊ธฐ๋ณธ ๊ฐ๋ ์ด ๋ง์ ๋ฆฌ๋์ค์ ๋นํด ์๋์ ์ผ๋ก ์ฝ๊ฒ ์ตํ ์ ์๋ค. ๋ ์ฌ์ฉ๋ฐฉ๋ฒ์ด useState ํ ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น์ทํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฏํ๋ค. ๋ฆฌ๋์ค์์ ๋น๋๊ธฐ ์์ ์ ์ํด Redux-thunk๋ Redux-saga ๊ฐ์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ข ๋ ์ด..
Today, What I learned? Next.js์์ SSG์ ISR ๋ฐฉ์์ผ๋ก ํ์ด์ง๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๊ณ ๋์ ์ผ๋ก ๋ผ์ฐํ ํ ์ ์์์ง ์ ๋ฆฌํด ๋ณธ๋ค. CSR๊ณผ SSR์ ๊ฐ๋ ์ ๊ทธ๋๋ ๋ค์ด๋ดค์ง๋ง, SSG์ ISR์ด๋ผ๋ ๊ฐ๋ ์ ์ฒ์ ์ ํ๋ค!.. ๋จผ์ SSG์ ISR์ ๋ํด ์ ๋ฆฝํด ๋์ด์ผ ํ์คํ ์ดํด๋ฅผ ํ ์ ์์ ๊ฒ ๊ฐ๋ค. SSG(Static Side Generation) SSG๋ ์ด๋ฆ ๊ทธ๋๋ก, ์ ์ ํ์ด์ง๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. ๋น๋ํ๋ ์๊ฐ ์๋ฒ์์ ํ์ด์ง๋ฅผ ๋ ๋๋ง ํ๋ค. ํ์ด์ง ์์ฒญ์ด ๋ค์ด์์ ๋ ์ด๋ฏธ ๋ ๋๋ง ๋ ์ ์ ํ์ด์ง๋ฅผ ๋ฐํํ๋ค. ํ์ด์ง์ ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ๋ค์ด ๋ณํ์ง ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค. ๋ฐ๋๋ก, ํ์ด์ง๊ฐ ์ ๋ฐ์ดํธ๋๋ค๋ฉด ๊ทธ๋๋ง๋ค ๋ค์ ๋น๋๊ฐ ํ์ํ๋ค๋ ์ ์ด ์๋ค. getStaticProps()๋ฅผ ..
Today, What I learned? ๋ฆฌ์กํธ ํ๋ ์์ํฌ์ธ Next.js์ ๋ํ ๊ณต๋ถ๋ฅผ ์์ํ๋ค. Next.js๊ฐ ์ด๋ค ์ด์ ๋ก ๋์ ๋๊ฒ ๋์๋์ง์ ๋ฆฌ์กํธ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ค๋ฅธ ์ ๋ค์ ๋ํด ์ ๋ฆฌํด ๋ณธ๋ค. Next.js ๋ ์ด์ฉ๋ค๊ฐ ํ์ํ์๊น? Next.js๋ ๋ฆฌ์กํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง ํ๋ ์์ํฌ(SSR)๋ค. ๊ธฐ์กด ๋ฆฌ์กํธ๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)์ธ๋ฐ, CSR์ SPA๋ฅผ ๋ฐํ์ผ๋ก ์๋ก๊ณ ์นจ ์์ด ์นํ์ด์ง๋ฅผ ์ด์ฉํ ์ ์๋ ์ ์ ์ ํธ์์ฑ์ด ๊ฐ์ ๋์์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ์ฌ์ด์ฆ๊ฐ ์ปค์ ธ์ ์ด๊ธฐ ๋ก๋ฉ์๋๊ฐ ์ฆ๊ฐ๋์๋ค๋ ๋จ์ ์ด ์์๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ํ์ฌ ํ์ด์ง์์ ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ง์ ๋ก๋ฉํ๋ ์ฝ๋๋ถํ (Code Split, Lazy-loading)์ ์ ์ฉํ๊ธฐ ์์ํ๋ค. ํ์ง๋ง!...
ํ๋ก์ ํธ๋ฅผ ๋ง์น๋ฉฐ ์ข์ ํ์๋ค ๋์ ์งํ ๊ธฐ๊ฐ ๋์ ๊ฝค ์ฆ๊ฒ๊ฒ ์์ ํ๋ ํ๋ก์ ํธ ๋ฐ์ด์ค๊ฐ ์ค๋ ๋ฐํ๋ฅผ ๋์ผ๋ก ๋ง๋ฌด๋ฆฌ๋์๋ค. ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ๋ฒ์ ์์์ ๋ง์กฑ์ค๋ฌ์ด ํ๋ฆฌํฐ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๊ฒ ๊ฐ๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ ๋ ํฌ์งํ ๋ฆฌ๋ ์ด์ชฝ! https://github.com/kimwonjuun/no-sunday GitHub - kimwonjuun/no-sunday: I really want to rest on sunday. I really want to rest on sunday. Contribute to kimwonjuun/no-sunday development by creating an account on GitHub. github.com ์ด๋ฒ ํ๋ก์ ํธ๋ ์ข์๋ ๋ถ๋ถ๊ณผ ํผ๋๋ฐฑ์ ๋ฐํ์ผ๋ก ๊ฐ์ธ์ ์ผ๋ก ์์ฌ์ ..
Comment