Today, What I learned? ์ค๋์ axios๋ฅผ ๋ค๋ฃจ๋ค๊ฐ ๋ง๋ ์๋ฌ์ ๋ํด์ ์จ๋ณด๋ ค ํ๋ค. JSON-Server๋ก redux-thunk๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ CRUD ํ๋ ์์ ์ ํ๊ณ ์์๋ค. ์ถ๊ฐ๊น์ง๋ ์ด์ฐ์ด์ฐํ๋๋ฐ ์ญ์ ๋ฅผ ๋๋ฅด๋ ์๊ฐ.. ํ๋ คํ ์๋ฌ๊ฐ ๋๋ฅผ ๋ฐ๊ฒผ๋ค. ์๋ฌ์ ์์ธ payload์ ๊ด๋ จํด์ ์๊ธด ์ค๋ฅ์ธ ๋ฏ ๋ณด์๋ค. ์์ฑํ๋ ์ฝ๋๋ ์ด๋ฌ๋ค. ์ถ๊ฐํ๋ฏ์ด payload๋ก id๋ฅผ ๋ณด๋ด์ฃผ๋ฉด ๋ ์ค ์์๋๋ฐ!!... ์๋์๋ ๊ฒ. ์ดํ์ ์ ๊ณต๊ฐ์ data๋ผ๋ ๊ฐ์ฒด๋ก ๊ฐ์ธ์ payload๋ฅผ ๋๊ฒจ๋ณด๊ธฐ๋ ํ์ง๋ง ๊ฒฐ๊ณผ๋ ๋๊ฐ์๋ค. Axios ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด HTTP ๋ฉ์๋์ ๋ฐ๋ผ์ ๋ค์ด๊ฐ๋ ์ธ์๊ฐ ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ค. ์๋์ ๊ฐ์ด post ๋ฉ์๋๋ก ๋ณด๋ผ ๊ฒฝ์ฐ์๋ ๋ ๋ฒ์งธ ์ธ์์ธ payload๊ฐ d..
Today, What I learned? ํ๋ก์ ํธ์ ์ธ ์๋ ์๋(?) UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ฒ ๋ง๋ณด๊ธฐ๋ก ์ฌ์ฉํด ๋ณด์๋ค. ์ด๋ฒ์ ์ฒ์ ์๊ฒ ๋์๋๋ฐ Material UI๋ ๋ฆฌ์กํธ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ๊ฐ์ฅ ์ ๋ช ํ ๊ฒ์ด๋ผ๊ณ !... ์ค๋์ ๊ฐ๋ตํ ์ค์น ๋ฐฉ๋ฒ๊ณผ ํ์ฉ์ ๋ํด์ ์กฐ๊ธ ์ ๋ฆฌํด ๋ณธ๋ค. Material UI Material UI๋ ๊ตฌ๊ธ์ Material Design์ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ง ๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ถํธ์คํธ๋ฉ์ฒ๋ผ ๊น๋ํ๊ณ ์ ๋๋ UI๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ๊ณต์ ๋ฌธ์์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ ์๋ ์ฌ์ดํธ์์ ํ์ธํ ์ ์๋ค. https://mui.com/ MUI: The React component library you always wanted MUI provides a simple, customiza..
redux-thunk? ๋ฆฌ๋์ค์ ๊ดํด์ ๊ณต๋ถํ๋ค ๋ณด๋ฉด '๋ฏธ๋ค์จ์ด'๋ผ๋ ๊ฒ์ ํ ๋ฒ์ฏค ๋ค์ด๋ณด์์ ๊ฒ์ด๋ค. redux-thunk, redux-saga, ๊ทธ ์ธ์๋ redux-promise-middleware ๋ฑ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ ์ค๋์ ๊ทธ์ค์์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ธ redux-thunk์ ๋ํ์ฌ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ๋ฆฌ๋์ค ๋ฏธ๋ค์จ์ด? ๋จผ์ ๋ฏธ๋ค์จ์ด์ ๋ํด์ ์์๋ณผ๊น ํ๋ค. ๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํด๋ณด์๋ค๋ฉด ์์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋ฆฌ๋์ค๊ฐ ์๋ก์ด state๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ ์๊ณ ์์ ๊ฒ์ด๋ค. dispatch๋ฅผ ํตํด ๋ฆฌ๋์๋ก ์ ๋ฌ๋ ์ก์ ์ด ๋ฆฌ๋์๋ก ์ ๋ฌ๋์ด state๊ฐ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ! ๋ฆฌ๋์ค ๋ฏธ๋ค์จ์ด๋ ์ฌ๊ธฐ์ ์ก์ ์ด ๋์คํจ์น๋๊ณ ๋ฆฌ๋์์ ์ ๋ฌ๋๊ธฐ ์ ์ ์ถ๊ฐ์ ์ธ ์์ ์ ์งํํ ์ ์๋ค. ๋ณดํต ์๋ฒ์ ํต..
Today, What I learned? Axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๊ฒ ๋์๋ค. ์ด์ ์๋ ๋์ง์ ๋ค์ด๋ ๋ดค์ง๋ง ์ด๋ฒ ๊ธฐํ๋ก ์ ๋๋ก ์ ํ๊ฒ ๋์๋ค๋ ๋ง์ด ๋ ๋ง๊ฒ ๋ค. Axios๋ฅผ ์๊ณ ๋๋ fetch์ ์ด๋ค ์ฐจ์ด๊ฐ ์๊ธธ๋? Axios๊ฐ ์ฑ๋ฅ์ด ๋ ์ข์๊ฐ?? ๊ฐ์ ๊ฒ๋ค์ด ๊ถ๊ธํด์ ธ์ ํ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. Axios ๊ณต์๋ฌธ์์์๋ 'Axios๋ node.js์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ Promise ๊ธฐ๋ฐ HTTP ํด๋ผ์ด์ธํธ ์ ๋๋ค.' ๋ผ๊ณ ์๊ฐ๋ฅผ ํ๊ณ ์๋ค. ์ฆ Promise๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTTP๋ฅผ ์ด์ฉํด์ ์๋ฒ์ ๋น๋๊ธฐ๋ก ํต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์๋์ ๊ฐ์ ํค์๋๋ก ์ค์นํ ์ ์๋ค. npm์์ ์ฌ์ฉํ ๊ฒฝ์ฐ $ npm install axios yarn์์ ์ฌ์ฉํ ๊ฒฝ์ฐ $ yarn add axios ๊ณต์ ๋ฌธ์๋ ์ด์ชฝ์์ ํ..
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..
๋ฌธ์ S์ฌ์์๋ ๊ฐ ๋ถ์์ ํ์ํ ๋ฌผํ์ ์ง์ํด ์ฃผ๊ธฐ ์ํด ๋ถ์๋ณ๋ก ๋ฌผํ์ ๊ตฌ๋งคํ๋๋ฐ ํ์ํ ๊ธ์ก์ ์กฐ์ฌํ์ต๋๋ค. ๊ทธ๋ฌ๋, ์ ์ฒด ์์ฐ์ด ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ถ์์ ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ์๋ ์์ต๋๋ค. ๊ทธ๋์ ์ต๋ํ ๋ง์ ๋ถ์์ ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ์ ์๋๋ก ํ๋ ค๊ณ ํฉ๋๋ค. ๋ฌผํ์ ๊ตฌ๋งคํด ์ค ๋๋ ๊ฐ ๋ถ์๊ฐ ์ ์ฒญํ ๊ธ์ก๋งํผ์ ๋ชจ๋ ์ง์ํด ์ค์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 1,000์์ ์ ์ฒญํ ๋ถ์์๋ ์ ํํ 1,000์์ ์ง์ํด์ผ ํ๋ฉฐ, 1,000์๋ณด๋ค ์ ์ ๊ธ์ก์ ์ง์ํด ์ค ์๋ ์์ต๋๋ค. ๋ถ์๋ณ๋ก ์ ์ฒญํ ๊ธ์ก์ด ๋ค์ด์๋ ๋ฐฐ์ด d์ ์์ฐ budget์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต๋ ๋ช ๊ฐ์ ๋ถ์์ ๋ฌผํ์ ์ง์ํ ์ ์๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ ์ถ๋ ฅ ์์ d budget resu..
Comment