๐บ Front End/-- react & redux & nextjs33 [React-redux] ๋ ๊ทธ๋ ๋ฏ Todo List ๋ฅผ ๋ง๋ค์ด๋ณด๋ฉฐ ๋ฐฐ์ฐ๋ ๋ฆฌ์กํธ ๋ฆฌ๋์ค ์ค๋์ React ์์ Redux ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์ฐ์ 2๊ฐ์ง ๊ธฐ์ ์ด ์ ํ๋์ด์ผ ํ๋ค. React์ React-Hooks Redux ์ ๊ธฐ๋ณธ Concept ์ ๋ด์ฉ๋ค์ ๋ชจ๋ฅธ๋ค๋ฉด ์กฐ๊ธ ํ๋ค์ด์ง ์ ์์ผ๋ ์ ๋งํฌ์์ ํ์ธํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค. ๋ชฉ์ฐจ redux์ react-redux์ ์ฐจ์ด redux ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ตฌ์ฑ ์์ Provider useDispatch() useSelector() react-redux ๋ก todo list ๋ง๋ค๊ธฐ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ ์์กด์ฑ ์ถ๊ฐ styled-components react-redux UI ์์ ํ๊ธฐ ํ ํ๋ฉด ๋ง๋ค๊ธฐ ๋ฆฌ๋์ค ์์ ํ๊ธฐ action type ๋ง๋ค๊ธฐ action creator ๋ง๋ค๊ธฐ reducer ๋ง๋ค๊ธฐ s.. 2021. 6. 10. [Next.js] Next.js ํ๋ก์ ํธ์์ Storybook์ผ๋ก TDD ํ๊ธฐ (Feat. Atomic Design Pattern) Storybook์ด๋? Storybook์ UI ๊ตฌ์ฑ ์์(์ปดํฌ๋ํธ)๋ฅผ ๊ฐ๋ฐํ๊ธฐ์ํ ์คํ ์์ค ๋๊ตฌ์ด๋ค. React๋ Vue๋ฅผ ๋น๋กฏํ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ง์์ง ํ๋์ ์น Front๊ฐ๋ฐ ์ํ๊ณ์์๋ ์ปดํฌ๋ํธ ํ๋ ํ๋์ ์ญํ ์ด ๋งค์ฐ ์ค์ํด์ก๋ค. ์ฌ๊ธฐ์ ์ปดํฌ๋ํธ๋ ์ธ๋ถ์ ์ํฅ์ ๋ฐ์ง ์๊ฒ Isolated ๋์ด์ผ ํ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์ Atomic Design Pattern์ด๋ผ๋ ๊ฒ์ด ๋ฑ์ฅํ์๊ณ ๊ทธ์ ๋ฐ๋ผ์ UI ์์ฒด์ ๋ ๋๋ง์๋ ํ ์คํธ๋ฅผ ์ ๊ฒฝ์ธ ์ ์๊ฒ ๋์๋ค. Storybook์ ์ฌ์ค ํ ์คํธ์๋ง ๊ตญํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋๊ณ ๊ฐ๋ฐ๊ณผ ์ดํด๊ด๊ณ์๋ค ์ฌ์ด์์์ ์ํต๊ณผ Docs ๋ฐ Props Test๋ฅผ ์งํํด์ฃผ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ฐ๋ฆฌ๋ ์ด Storybook์ ํตํด์ TDD๋ฅผ ์ง.. 2021. 1. 18. [Next.js] _document.js๋ก ๋ ์ด์์ ํ ํ๋ฆฟ์ ์ฌ์ฉํด์ html ๊ณผ body ํ๊ทธ ์ปค์คํฐ๋ง์ด์ง ํ๊ธฐ. Document ์ปดํฌ๋ํธ Next.js์๋ ํ๊ทธ์ ํ๊ทธ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด์ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ค. Build ์์ ์ _document.jsํ์ผ์ pages ๋๋ ํ ๋ฆฌ ์์์ ํ์ํ๊ณ ๋ฅผ extends ํ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ ์ปค์คํ ์ค์ ์ ๋ฐ์๋คํ๋๋ฐ, ์ด๋ ํ์ ํ์ผ์ ์๋๋ฉฐ, ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ปค์คํ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ Next์ ๋ชจ๋์ ์กด์ฌํ๋ _document.js ํ์ผ์ ์คํ์ํจ๋ค. ํ๋ก์ ํธ๊ฐ ์ปค์ง ์๋ก HTML ํ๊ทธ๋ฅผ ์กฐ์ํด์ผํ ์ผ๋ค์ด ๋ง์์ง๋ฏ๋ก ์ฐ๋ฆฌ๋ _document.js์ ์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ฅ๋ ฅ์ด ์์ด์ผ ํ๋ค. ๊ธฐ๋ณธ ๊ตฌ์กฐ pages ๋๋ ํ ๋ฆฌ ์๋์ _document.jsํ์ผ์ ์์ฑํ๋ค. import Document, { Html, Head, Main, NextScript } from 'next/d.. 2021. 1. 3. [Next.js] renderPage ํจ์๋ก styled-components ์ค๋ฅ ๋ฐฉ์งํ๊ธฐ. React ์์ ์คํ์ผ๋ง์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๊ฐ์ธ์ ์ผ๋ก ๋จ์ฐ styled-components๊ฐ ์๋์ ์ผ๋ก ์ข๋ค๊ณ ์๊ฐํ๋ค. ํ์ง๋ง Next์์๋ styled-components๊ฐ ์ ๋๋ก ๋์ํ์ง ์์ ์ ์๋ค. ์ค๋ ๊ทธ ์ค๋ฅ๋ค์ ๋ถ์ํด๋ณด๊ณ ์ด๋ป๊ฒ ํ๋ฉด ํด๊ฒฐํ ์ ์๋์ง ์์๋ณด์. ๊ทธ๋ฅ styled-components๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ฐ๋์? Next.js ์ฑ์์ styled-components๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ผ์ด ์ ์ฉ๋์ง ์๊ณ ์ผ์ ์๊ฐ ์ดํ์ ์คํ์ผ์ด ์ ์ฉ๋๋ค. ๋ง์น CSS ํ์ผ์ด ๋ก๋๋์ง ์๋ค๊ฐ ๊ฐ์๊ธฐ ๋ก๋๋๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๋๋ฐ, ์ด๋ UX์์ ๋์ ํ๊ฐ๋ก ๊ฐ์ธ๋ ์ ์๊ณ ์ฌ์ฉ์์๊ฒ ์์ฃผ ๋ถ์พํ ๊ฒฝํ์ ์ ์ฌํ ์ ์๋ค. ์ ๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋์? Next๋ ์ฐ์ ๋ชจ๋ ํ์ด์ง๊ฐ Pre-R.. 2021. 1. 3. [styled-components] ThemeProvider์์ MediaQuery๋ฅผ ์ ์ฉํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ ์ด ๊ธ์ Styled-components์ ThemeProvider์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ ํ ์ง์์ด ํ์ํฉ๋๋ค. ํน์ ThemeProvider์ ๋ํ ์ ๋ณด๋ฅผ ํ์ธํด๋ณด๊ณ ์ถ๋ค๋ฉด ThemeProvider๋ก ๊ณตํต ์คํ์ผ ์์ฑ ๊ด๋ฆฌํ๊ธฐ๋ฅผ ๋ฐฉ๋ฌธํด์ ๊ฐ๋ณ๊ฒ ์ฝ๊ณ ์๋ณด์ธ์. ๊ทธ๋ผ ๋ ๋์์ด ๋ ๊ฑฐ์์ :) ์ด๋ค ์ข ๋ฅ์ ์ธ์ด๋ ๋๊ตฌ๊ฐ ๋์๋ ์น ํ๋ก ํธ์ ์คํ์ผ๋ง์ ํ๋ ๊ณผ์ ์๋ ๋ง์ ๋ ธ๋ ฅ๊ณผ ํ์ด ๋ค์ด๊ฐ๋ค. ๊ทธ ์ค์์๋ ๋ชจ๋ฐ์ผ๊ณผ ์น์ ์คํ์ผ์ ๋ฐ๋ก ๋๋๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ๋ถ๋ถ์์ ๊ต์ฅํ ๋ฐ๋ณต๋๋ ์์ ์ ๋ง์ด ํ๊ฒ ๋๋๋ฐ, ์ด ์์ ์ ์ฐ๋ฆฌ๋ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค. ๋ฐ๋ก ThemeProvider. ์ค๋์ ์ด ThemeProvider๋ฅผ ํตํด์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ข ๋ ์ฝ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค. ๊ทธ ์ ์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ.. 2021. 1. 2. [styled-components] ThemeProvider๋ก ๊ณตํต ์คํ์ผ ์์ฑ ๊ด๋ฆฌํ๊ธฐ. ์ง๋ ์ฌ์ด ๋๋์๊ฒ ํผ์๋ ธ ์ฐ์ต์ค ํ์ด์ง ๋ง๋ จํด์ฃผ๊ธฐ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ฉด์ ๊ฐ์ฅ ํฌ๊ฒ ๋๊ผ๋ ์ ์ ๋ฐ๋ก css์์์ ํต์ผ์ฑ์ด ์๋ค ๋ผ๋ ๊ฒ์ด์๋ค. ์ฝ 15๊ฐ์ ์ปดํฌ๋ํธ์ 12๊ฐ์ ์น์ ๊ณผ 3๊ฐ์ ํ์ด์ง๋ก ์ด๋ฃจ์ด์ง ๋ฆฌ์กํธ ์ฑ์ ๋ง๋ค๋ฉด์ ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ์ ๋ง๋ style.js ํ์ผ์ ์์ฑํ๋ค. ํ์ง๋ง ๊ทธ ๋น์์๋ CSS๋ฅผ ๊ณตํต์ผ๋ก ๊ด๋ฆฌํ ์๊ฐ๋ณด๋ค๋ ๋น ๋ฅด๊ฒ ํ๋ก์ ํธ๋ฅผ ๋๋ด๊ณ ์ถ์ ๋ง์์ด์์ด์ ๊ณตํต ์คํ์ผ์ ๊ดํ ์๊ฐ์ ์ฌ์ ๊ฐ ์์๋ค. ๊ทธ๋๋ ๋ง์ ํ์ผ ์ ๋ถ์์ด ์์๋๋ฐ, ๊ทธ ๋ถ์์ด ๊ฐ์ ธ์ฌ ๋ฌธ์ ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋งค ์ปดํฌ๋ํธ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์คํ์ผ ์ฝ๋์ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ค. => ์ ์ง๋ณด์ ๋น์ฉ์ ์ฆ๊ฐ ์คํ์ผ ์์ฑ๊ฐ๋ค์ด ์ค๊ตฌ๋๋ฐฉ์ด๋ผ ์ด๋ค ์์ฑ์ ๊ฐ๊ณ ์๋์ง ์ฝ๋๋ก ํ์ธ์ด ์ด๋ ต๋ค => ํ์ ์์์ ๋ฌธ์ ์คํ์ผ๋ง๋ค ๋ค๋ฅธ ์์ฑ.. 2021. 1. 2. ์ด์ 1 2 3 4 ยทยทยท 6 ๋ค์