12์ ์ ์งธ ์ฃผ๋ฅผ ๋ณด๋ด๋ฉฐ ์ ๊ทธ๋ ์ด๋๋ ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ค์ ๋ง๋ค์ด๋ณธ ํ ์ฃผ.. ๊ทธ ์ฌ์ด ๋๋ ๋ง์ด ์ค๊ณ ๋ ์จ๊ฐ ์ด๋ง ๋ฌด์ํ๊ฒ ์ถ์์ก๋ค. ์ด๋ด ๋์ผ์๋ก ๊ฑด๊ฐ๊ด๋ฆฌ์ ์ ์ํด์ ํ์ด์ค๋ฅผ ์์ง ๋ง์!.. ์ฐจ์ฃผ ๋ชฉ์์ผ๋ถํฐ๋ ํ๋ก์ ํธ ์์์ด๋ค. ๐ ํ๋ด๋ณด์!.. ๐ Fact ๋ฆฌ๋์ค๋ฅผ ์ด์ฉํ ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๊ณ ๋ฆฌํฉํ ๋ง๊น์ง ํด๋ณด์๋ค. ํฌ๋ ๋ฆฌ์คํธ CRUD ๊ธฐ๋ฅ์ ๋ชจ๋ ๋ง๋ค์๋ค. ์๋ จ ์ฃผ์ฐจ ๋ช๋ช ํค์๋๋ค์ ๋๊น ํ๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ๋งค์ผ ๊พธ์คํ ํ์๋ค. ๐ Feeling ์์ ๊ธฐ๋ฅ๊น์ง ์์ฑํ๊ฒ ๋์ด ๋ฟ๋ฏํ๋ค. ํ์ ์ง๊ฐ๊ธ ์ ๋ฆฝ์ ๋์ ํ๋ค!.. ์ ์ง ๊ฒฝ๊ฐ์ฌ์ด ๋ ๋ค. ๐ Finding styled-components์ props ํ์ฉ๊ณผ ์ ์ญ CSS ์ค์ Query String๊ณผ Path variable ๋นํธ ์ฐ์ฐ์ | ..
Today, What I learned? ์ ์ฒด์ ์ธ ๊ณผ์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฃ๊ณ , ๋๋ค ํ๊ฒ ๋ฝํ ๋ค๋ฅธ ๋ถ๋ค์ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ์ฝ๋๋ฅผ ๋ณด๋ค ๋ณด๋ ๋ด ์ฝ๋์์ ๊ณ ์น๊ณ ์ถ์ ๋ถ๋ถ๋ค์ด ์๊ฒผ๋ค! ์ ๊ทธ๋๋ ์ ์ถํ๊ณ ๋ญ๊ฐ... ๋ถ์กฑํ ์ด ๋๋..๐ค ๊ฐ์ ์๊ฐ์ด ๋ค์๋๋ฐ ์ญ์ ๊ฐ๊ธธ์ด ๋ฉ๋ค!.. ์ผ๋จ ์ฐ์ ์ ์ผ๋ก ๋ฆฌํฉํ ๋งํ ๋ถ๋ถ๋ค์ ์ ๋ฆฌํด๋ณธ๋ค. TodoList์ ๋ฟ๋ ค์ฃผ๋ ๋ถํ์ํ props ์ ๊ฑฐ ์ ์๊ฐํ์ง ๋ชปํ์๊น ์ถ์ ๋ถ๋ถ!.. ์ด์ฐจํผ ๋ฆฌ๋์ค๋ก ์ํ๊ด๋ฆฌ๋ฅผ ํ๊ณ ์๊ณ ๋ฆฌ๋์๋ก๋ถํฐ todos ๋ผ๋ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ฟ๋ ค์ฃผ๋๋ฐ, ๊ตณ์ด props๋ก ๋๊ฒจ์ค ํ์๊ฐ ์์๋ค. TodoList ์ปดํฌ๋ํธ๋ก useSelector ํ ์ ์ฎ๊ฒจ์ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋ง ํ ์ ์๋๋ก ๋ณ๊ฒฝํ๋ค. ๋ฐ๋ณต๋๋ label, input ์ปดํฌ๋ํธํ ํฌ๋ ์ ๋ ฅ ๋ถ๋ถ..
๋ ๋ฒ์งธ ํฌ๋ ๋ฆฌ์คํธ react-router-dom, styled-components์ redux์ ๋ํด ์ข ๋ ๊ณต๋ถํ ํ์ ๊ธฐ์ด ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ ๊ทธ๋ ์ด๋ํด์ ๋ค์ ํ๋ฒ ๋ง๋ค์ด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค. ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๋ฉฐ UI/UX ์ ์ผ๋ก๋, ๊ธฐ์ ์ ์ผ๋ก ๊ณ ๋ฏผํ๋ ๋ถ๋ถ๋ค๊ณผ ๊นจ๋ฌ์ ์ .. ๊ฐ์ ๊ฒ๋ค์ ํ๊ณ ํด๋ณด๋ ค ํ๋ค. ์์ฑ๋ ํฌ๋๋ฆฌ์คํธ๋ฅผ ๋ฐฐํฌํ ๋งํฌ๋ ์๋! https://todolist-redux-theta.vercel.app/ React App todolist-redux-theta.vercel.app UI/UX ์ง๋๋ฒ์ ๋ง๋ค ๋๋ ๊ฝค ์์ ๋ถ๋ฐฉํ๊ฒ ๋ง๋ค์ด๋ดค์ผ๋ ์ด๋ฒ์๋ ์๊ตฌ๋๋ ํ์ ์ ์งํ๋ ์ฌ์ฉ์์ ํธ์๋ฅผ ์๊ฐํด์ ๋ ์ด์์์ ์ง๋ณด์๋ค. ํฌ๋ ํ๋จ๋ถ์ ๋ฒํผ์ ์ฐ์ ์์๋ฅผ ๋ฐ์ก์ ๋, ์ ์ ์ ์ฅ์์๋ '์๋ฃ'๊ฐ ..
๋ค์ด๊ฐ๋ฉฐ ์น์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๊ธฐ ์ํด์๋ ์ด๋ค ์์ผ๋ก ์ ์กํ๊ณ ์ด๋ค ๊ฒฝ๋ก(End-point)์ ์ ๋ฌํ ์ง๋ฅผ ์ค์ํ๊ฒ ๋ณธ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ๋ฐ๋ ๋ฐฉ์์ผ๋ก๋ GET, POST ๋ฑ์ HTTP ๋ฉ์๋๊ฐ ์๊ณ , ๊ด๋ จํด์ REST API๋ผ๋ ๊ฐ๋ ์ด ์๋ค. ๊ทธ๋ณด๋ค ์ด๋ฒ ๊ธ์์๋ ๊ฒฝ๋ก์ ๋ํด์, ๊ทธ ์ค์์๋ Query Parameter์ Path Variable์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. Query Parameter (Query String) ์ ์ด๋ฏธ์ง๋ ์ฐ๋ฆฌ๊ฐ ํํ๊ฒ ๋ณด๋ URL์ ๊ตฌ์กฐ์ด๋ค. ์ฌ๊ธฐ์ ? ์ดํ๋ถํฐ ์์๋๋ Parameters๋ผ๋ ๋ถ๋ถ์ด ๋ฐ๋ก Query Parameter์ด๋ค. ํํ Query String, ์ฟผ๋ฆฌ ์คํธ๋ง์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค. ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฐ์ ํํ! Query St..
Today, What I learned? redux์ styled-components, react-router-dom์ ์ด์ฉํด์ ์ข ๋ ์ ๊ทธ๋ ์ด๋๋ ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋๋ ์ค!.. ์ด์ ๋ณด๋ค ์ปดํฌ๋ํธ๋ฅผ ์ข ๋ ์ธ๋ถํ ํ๋ค๋ณด๋ ๋ฒํผ ์ปดํฌ๋ํธ๋ ๋ถ๋ฆฌํ๊ฒ ๋์๋ค. ๋ฌธ์ ๋ ๋ฒํผ ์ปดํฌ๋ํธ์ ์ ๋ฌ๋๋ ์ฌ๋ฌ ํจ์๋ค์ ์ด๋ป๊ฒ ์คํ์ํฌ ๊ฒ์ด๋!.. ์๋๋ฐ... ๋ฆฌ์กํธ์์ onClick ์ด๋ฒคํธ์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ํจ์๋ฅผ ์ด๋ป๊ฒ ๋๊ฒจ์ค ๊ฒ์ธ์ง๋ฅผ ์๊ฒ ๋ ๊ณผ์ ์ ์ ๋ฆฌํด๋ณธ๋ค. ๊ธฐ์กด์ ์ฝ๋ type์ ๋ฐ๋ผ์ props๋ก ๋ฐ์์จ ๋ค๋ฅธ ํจ์๋ค์ ์คํ์ํค๋๋ก ํ๊ณ ์ถ์๋ค. ์ ๊ธฐ๊น์ง ์ข์๋๋ฐ, ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋จ์ ๋ฐ๋ผ ํ์ ์ด ์ถ๊ฐ๋๋ค ๋ณด๋ ์ผํญ ์ฐ์ฐ์๋ก๋ ๋ฒ๊ฑฐ์ด ์ํฉ์ด ๋ฐ์.. ๊ณ์ ์ด๋ ๊ฒ? ์ค์ค์ด ์์ธ์ง์ฒ๋ผ? ๊ฐ๋ค๊ณ ? ์ด๋ ๊ฒ ์ฐ๋ ๊ฒ์ ์ผํญ ..
๋ฌธ์ ๋ง์ , ๋บ์ ์์๋ค์ด 'X [์ฐ์ฐ์] Y = Z' ํํ๋ก ๋ค์ด์๋ ๋ฌธ์์ด ๋ฐฐ์ด quiz๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์์์ด ์ณ๋ค๋ฉด "O"๋ฅผ ํ๋ฆฌ๋ค๋ฉด "X"๋ฅผ ์์๋๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ ์ถ๋ ฅ ์ quiz result ["3 - 4 = -3", "5 + 6 = 11"] ["X", "O"] ["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] ["O", "O", "X", "O"] ํ์ด =์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ ์ฐ์ฐ์ด ์ค๋ฅธ์ชฝ์ ์์ ์ผ์นํ๋์ง๋ฅผ ๋ฐ์ ธ O, X๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ๋ค. quiz ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก split ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋จผ์ ๋ค์๋ค. function solution(quiz..
12์ ๋์งธ ์ฃผ๋ฅผ ๋ณด๋ด๋ฉฐ ๋ฆฌ์กํธ ํ์ต์ ๋ฐ์ ํ ์ฃผ์๋ค. ๋งค์ฃผ ๋๊ฐ์ด ์ฐ๋ ๊ฒ ๊ฐ๊ธด ํ๋ฐ ์ ๋ง ํ ์ฃผ๊ฐ ์ด๋ป๊ฒ ์ง๋๊ฐ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๋ ๊น์งํ๋ฉด ์ํด๊ฐ ๋ ๋ฏํ๋ค.. ๐ ๊ทธ๋ผ์๋ ๋ช ๋ฌ ์ ๊ณผ ๋น๊ตํด์ ๊พธ์คํ ์ฑ์ฅํ๊ณ ์๋ ๋.. ์นญ์ฐฌํด! ๐ ๐ Fact ๋ฆฌ์กํธ ๊ธฐ์ด์ ์ธ ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค. styled-components๊ฐ ์๊ฐ๋ณด๋ค ๋ ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์๊ฒ ๋์๋ค. redux์ ๋ํด ๋ณต์ตํ๋ค. ํจํค์ง ๊ด๋ฆฌ ํด์ธ yarn์ ์ฒ์ ์ฌ์ฉํด๋ณด์๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ๋งค์ผ ๊พธ์คํ ํ์๋ค. ๐ Feeling ์๊ตฌ์ฌํญ์ ์ ํ์ธํด์ผ ํจ์ ๋ค์ ํ๋ฒ ๋๊ผ๋ค. ๊ผผ๊ผผํ๊ฒ ์ฝ๊ณ ์ฒดํฌํ์! ๊ณผ์ ๋ฅผ ์ ๋๋ด์ ๋คํ์ด๋ค! ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ์ ๋ชฐ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์ตํ ์ ์๋ ๊ฒ ๊ฐ์์ ์ข๋ค. ๐ Finding ..
๋ฌธ์ S์ฌ์์๋ ๊ฐ ๋ถ์์ ํ์ํ ๋ฌผํ์ ์ง์ํด ์ฃผ๊ธฐ ์ํด ๋ถ์๋ณ๋ก ๋ฌผํ์ ๊ตฌ๋งคํ๋๋ฐ ํ์ํ ๊ธ์ก์ ์กฐ์ฌํ์ต๋๋ค. ๊ทธ๋ฌ๋, ์ ์ฒด ์์ฐ์ด ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ถ์์ ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ์๋ ์์ต๋๋ค. ๊ทธ๋์ ์ต๋ํ ๋ง์ ๋ถ์์ ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ์ ์๋๋ก ํ๋ ค๊ณ ํฉ๋๋ค. ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ๋๋ ๊ฐ ๋ถ์๊ฐ ์ ์ฒญํ ๊ธ์ก๋งํผ์ ๋ชจ๋ ์ง์ํด ์ค์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 1,000์์ ์ ์ฒญํ ๋ถ์์๋ ์ ํํ 1,000์์ ์ง์ํด์ผ ํ๋ฉฐ, 1,000์๋ณด๋ค ์ ์ ๊ธ์ก์ ์ง์ํด ์ค ์๋ ์์ต๋๋ค. ๋ถ์๋ณ๋ก ์ ์ฒญํ ๊ธ์ก์ด ๋ค์ด์๋ ๋ฐฐ์ด d์ ์์ฐ budget์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต๋ ๋ช ๊ฐ์ ๋ถ์์ ๋ฌผํ์ ์ง์ํ ์ ์๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ ์ถ๋ ฅ ์์ d budget resu..
React์์์ CSS ๋ฆฌ์กํธ์์ CSS๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค. CSS ํ์ผ์ import ํ๊ฑฐ๋ module๋ก ์ฌ์ฉํ ์๋ ์๊ณ , SASS ๊ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ๋ tailwind ๋ฑ์ ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํ ์๋ ์๋ค. ๊ทธ์ค์์ ์ค๋์ Styled-components์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. Styled-components์ ๋ํด์ ๋ชฐ๋๋ ๋ถ๋ถ์ด ๋ง์๊ณ , ๋ฌด์๋ณด๋ค ์ฌ์ฉํด๋ณด๋ ์๊ฐ๋ณด๋ค ๋ ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๊ธฐ ๋๋ฌธ์ด๋ค! Styled-components Styled-components๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ CSS๋ฅผ ์์ฑํ๋ CSS-in-JS ๋ฐฉ์์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ CSS ์ฝ๋๋ฅผ ๋ง๋ค์ด๋ด์ ์ปดํฌ๋ํธ๋ฅผ ๊พธ๋ฐ ์ ์๋ค. ์ด๋ฐ CSS-in-JS ๋ฐฉ์์ ํจํค์ง๊ฐ Styled-compo..
๋ฆฌ์กํธ์ state์ props์ ๋ํด์ ๊ฐ๋ณ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค..! ํ์ฌ ๋ด์ฉ์ ์ถํ ๋ง๋ถ์ฌ์ง๊ฑฐ๋ ์์ ๋ ์ ์๋ค. ๐ ((์๋ชป๋ ๋ถ๋ถ์ ๋ํ ์ฒจ์ธ์ ์ธ์ ๋ ํ์์ ๋๋ค..)) State ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฐ๋ ์ ์๋ ๊ฐ. useState ํ ์ ํตํด ๋ฆฌ์กํธ์ state์ ๋ณํ๋ฅผ ์๋ ค์ ์ปดํฌ๋ํธ๊ฐ ์ฌํ๊ฐ๋ ์ ์๋๋ก ํ๋ค. ์ดํ JSX๊ฐ ๋ค์ ํ๊ฐ๋๋ฉฐ ๋ณํ๋ ๋ถ๋ถ์ ํ๋ฉด์ ๋ ๋๋งํ๋ค. const [state, setState] = useState(''); state์ ๋ฐ๋ก ๋ณ๊ฒฝํ๋ฉด ์ ๋ ๊น? useState๊ฐ const๋ก ์์ฑ๋ ์ด์ ๋?? ๐ค ์ฐ์ state๋ setState ํจ์๋ฅผ ํตํด์๋ง ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค. state๋ฅผ ๋ฐ๋ก ์ฐ๋ฉด ์ ๋๋? ์ถ์ ์ ์๋๋ฐ, ์ด๋ ๊ฒ state๊ฐ ์ง์ ์์ ๋ ์ํ์ ๋ฐฉ์ง..
Comment