![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2B1sT%2FbtrUOLGKTFN%2FUOedJ5VU7BxaFhDkLLGJzK%2Fimg.png)
์๋ฒ ์ฃผ์๋ฅผ ๋ ธ์ถ์ํค์ง ์๊ธฐ ์ํด .env ํ์ผ์ ์ด์ฉํด์ ํ๊ฒฝ๋ณ์๋ฅผ ์ ์ฉํด๋ณด๊ธฐ๋ก!.. ์์ฃผ ์ฐ๋ ๊ฒฝ๋ก๋ ๊ฐ์ด ์๋ค๋ฉด ํ๊ฒฝ๋ณ์๋ฅผ ์ด์ฉํด์ ํธํ๊ฒ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค. ๋จผ์ .env ํ์ผ์ ๋ง๋ค์ด์ ๋ณ์๋ฅผ ๋ง๋ค์ด์ค๋ค. ๋ณ์ ์ ์ธ ๋ฆฌ์กํธ์์ ์ฌ์ฉํด์ฃผ๋ ค๋ฉด ์์ REACT_APP ํค์๋๋ฅผ ๊ผญ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค. url ์ฃผ์๋ฅผ ๋ฃ๋๋ค๋ฉด ๊ตณ์ด ๋ฐ์ดํ๋ก ๊ฐ์ธ์ฃผ์ง ์์๋ ๋๋ค! ๋ณ์ ์ฌ์ฉ ์๋์ ๊ฐ์ด process.env.[๋ณ์์ด๋ฆ]์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค. await axios.patch(`${process.env.REACT_APP_API_URL}/articleComment/${id}`,{...comment,}); ์ฒ์์๋ ์๋์ฒ๋ผ ์ฌ์ฉํ์๋๋ฐ ๊ณ์ 404 ์ค๋ฅ๊ฐ ๋ด๋ค.. ๐ ์ ์ธํ ๋ณ์๋ช ๊ทธ๋๋ก ๋ฃ์ด์ค์ผ ํ๋๋ฏ! awai..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCBK8r%2FbtrUt2wJ2Rr%2FKx90La1OdCDWoxGE6ek4P1%2Fimg.png)
ํ์ด์ง๋ค์ด์ ? ๋ฌดํ ์คํฌ๋กค? ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฒ์๊ธ ์ฝํ ์ธ ์๊ฐ ๋๋ฌด ๋ง์์ง ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ ํ์ด์ง๋ค์ด์ ์ด๋ ๋ฌดํ์คํฌ๋กค์ ์ ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค. ๊ฒ์๊ธ ํน์ฑ์, ํ๋จ์ ๊ธ์ฐ๊ธฐ ๋ฒํผ์ด ํญ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฌดํ์คํฌ๋กค๋ณด๋ค๋ ํ์ด์ง๋ค์ด์ ์ด ๋ ์ ํฉํ๊ฒ ๋ค๋ ์๊ฐ์ผ๋ก!.. ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํด๋ณด๊ธฐ๋ก ํ๋ค. MUI์ Pagination ์ปดํฌ๋ํธ MUI์์ ํ์ด์ง๋ค์ด์ ์ปดํฌ๋ํธ๋ฅผ ๊ฒ์ํ๋ฉด ๋ค์ํ ์คํ์ผ์ ํ์ด์ง๋ค์ด์ ์ปดํฌ๋ํธ๋ฅผ ํ์ธํ ์ ์๋ค. https://mui.com/material-ui/react-pagination/#main-content React Pagination component - Material UI The Pagination component enables the user to select ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmJVFd%2FbtrUlBNgG1f%2FPp0tUAcHkfocFpIBzgL8s1%2Fimg.png)
Today, What I learned? ์ค๋์ axios๋ฅผ ๋ค๋ฃจ๋ค๊ฐ ๋ง๋ ์๋ฌ์ ๋ํด์ ์จ๋ณด๋ ค ํ๋ค. JSON-Server๋ก redux-thunk๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ CRUD ํ๋ ์์ ์ ํ๊ณ ์์๋ค. ์ถ๊ฐ๊น์ง๋ ์ด์ฐ์ด์ฐํ๋๋ฐ ์ญ์ ๋ฅผ ๋๋ฅด๋ ์๊ฐ.. ํ๋ คํ ์๋ฌ๊ฐ ๋๋ฅผ ๋ฐ๊ฒผ๋ค. ์๋ฌ์ ์์ธ payload์ ๊ด๋ จํด์ ์๊ธด ์ค๋ฅ์ธ ๋ฏ ๋ณด์๋ค. ์์ฑํ๋ ์ฝ๋๋ ์ด๋ฌ๋ค. ์ถ๊ฐํ๋ฏ์ด payload๋ก id๋ฅผ ๋ณด๋ด์ฃผ๋ฉด ๋ ์ค ์์๋๋ฐ!!... ์๋์๋ ๊ฒ. ์ดํ์ ์ ๊ณต๊ฐ์ data๋ผ๋ ๊ฐ์ฒด๋ก ๊ฐ์ธ์ payload๋ฅผ ๋๊ฒจ๋ณด๊ธฐ๋ ํ์ง๋ง ๊ฒฐ๊ณผ๋ ๋๊ฐ์๋ค. Axios ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด HTTP ๋ฉ์๋์ ๋ฐ๋ผ์ ๋ค์ด๊ฐ๋ ์ธ์๊ฐ ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ค. ์๋์ ๊ฐ์ด post ๋ฉ์๋๋ก ๋ณด๋ผ ๊ฒฝ์ฐ์๋ ๋ ๋ฒ์งธ ์ธ์์ธ payload๊ฐ d..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FADML2%2FbtrUfKJlIyu%2FSzskmROkQMkPdNvyFjhKlK%2Fimg.png)
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..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQwN22%2FbtrT6XWFAXU%2FmtFMiiKNSUvYvjaSwb2IL1%2Fimg.jpg)
redux-thunk? ๋ฆฌ๋์ค์ ๊ดํด์ ๊ณต๋ถํ๋ค ๋ณด๋ฉด '๋ฏธ๋ค์จ์ด'๋ผ๋ ๊ฒ์ ํ ๋ฒ์ฏค ๋ค์ด๋ณด์์ ๊ฒ์ด๋ค. redux-thunk, redux-saga, ๊ทธ ์ธ์๋ redux-promise-middleware ๋ฑ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ ์ค๋์ ๊ทธ์ค์์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ธ redux-thunk์ ๋ํ์ฌ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ๋ฆฌ๋์ค ๋ฏธ๋ค์จ์ด? ๋จผ์ ๋ฏธ๋ค์จ์ด์ ๋ํด์ ์์๋ณผ๊น ํ๋ค. ๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํด๋ณด์๋ค๋ฉด ์์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋ฆฌ๋์ค๊ฐ ์๋ก์ด state๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ ์๊ณ ์์ ๊ฒ์ด๋ค. dispatch๋ฅผ ํตํด ๋ฆฌ๋์๋ก ์ ๋ฌ๋ ์ก์ ์ด ๋ฆฌ๋์๋ก ์ ๋ฌ๋์ด state๊ฐ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ! ๋ฆฌ๋์ค ๋ฏธ๋ค์จ์ด๋ ์ฌ๊ธฐ์ ์ก์ ์ด ๋์คํจ์น๋๊ณ ๋ฆฌ๋์์ ์ ๋ฌ๋๊ธฐ ์ ์ ์ถ๊ฐ์ ์ธ ์์ ์ ์งํํ ์ ์๋ค. ๋ณดํต ์๋ฒ์ ํต..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcklG9f%2FbtrT3qD7PWz%2F5vJ7jQzep3ciZA4Nmbr3Ck%2Fimg.png)
Today, What I learned? Axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๊ฒ ๋์๋ค. ์ด์ ์๋ ๋์ง์ ๋ค์ด๋ ๋ดค์ง๋ง ์ด๋ฒ ๊ธฐํ๋ก ์ ๋๋ก ์ ํ๊ฒ ๋์๋ค๋ ๋ง์ด ๋ ๋ง๊ฒ ๋ค. Axios๋ฅผ ์๊ณ ๋๋ fetch์ ์ด๋ค ์ฐจ์ด๊ฐ ์๊ธธ๋? Axios๊ฐ ์ฑ๋ฅ์ด ๋ ์ข์๊ฐ?? ๊ฐ์ ๊ฒ๋ค์ด ๊ถ๊ธํด์ ธ์ ํ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. Axios ๊ณต์๋ฌธ์์์๋ 'Axios๋ node.js์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ Promise ๊ธฐ๋ฐ HTTP ํด๋ผ์ด์ธํธ ์ ๋๋ค.' ๋ผ๊ณ ์๊ฐ๋ฅผ ํ๊ณ ์๋ค. ์ฆ Promise๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTTP๋ฅผ ์ด์ฉํด์ ์๋ฒ์ ๋น๋๊ธฐ๋ก ํต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์๋์ ๊ฐ์ ํค์๋๋ก ์ค์นํ ์ ์๋ค. npm์์ ์ฌ์ฉํ ๊ฒฝ์ฐ $ npm install axios yarn์์ ์ฌ์ฉํ ๊ฒฝ์ฐ $ yarn add axios ๊ณต์ ๋ฌธ์๋ ์ด์ชฝ์์ ํ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCQDn9%2FbtrTRCqQX8J%2FhlOwfqTzgLfrJUjcT0Y9V1%2Fimg.png)
Today, What I learned? ์ ์ฒด์ ์ธ ๊ณผ์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฃ๊ณ , ๋๋ค ํ๊ฒ ๋ฝํ ๋ค๋ฅธ ๋ถ๋ค์ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ์ฝ๋๋ฅผ ๋ณด๋ค ๋ณด๋ ๋ด ์ฝ๋์์ ๊ณ ์น๊ณ ์ถ์ ๋ถ๋ถ๋ค์ด ์๊ฒผ๋ค! ์ ๊ทธ๋๋ ์ ์ถํ๊ณ ๋ญ๊ฐ... ๋ถ์กฑํ ์ด ๋๋..๐ค ๊ฐ์ ์๊ฐ์ด ๋ค์๋๋ฐ ์ญ์ ๊ฐ๊ธธ์ด ๋ฉ๋ค!.. ์ผ๋จ ์ฐ์ ์ ์ผ๋ก ๋ฆฌํฉํ ๋งํ ๋ถ๋ถ๋ค์ ์ ๋ฆฌํด๋ณธ๋ค. TodoList์ ๋ฟ๋ ค์ฃผ๋ ๋ถํ์ํ props ์ ๊ฑฐ ์ ์๊ฐํ์ง ๋ชปํ์๊น ์ถ์ ๋ถ๋ถ!.. ์ด์ฐจํผ ๋ฆฌ๋์ค๋ก ์ํ๊ด๋ฆฌ๋ฅผ ํ๊ณ ์๊ณ ๋ฆฌ๋์๋ก๋ถํฐ todos ๋ผ๋ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ฟ๋ ค์ฃผ๋๋ฐ, ๊ตณ์ด props๋ก ๋๊ฒจ์ค ํ์๊ฐ ์์๋ค. TodoList ์ปดํฌ๋ํธ๋ก useSelector ํ ์ ์ฎ๊ฒจ์ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋ง ํ ์ ์๋๋ก ๋ณ๊ฒฝํ๋ค. ๋ฐ๋ณต๋๋ label, input ์ปดํฌ๋ํธํ ํฌ๋ ์ ๋ ฅ ๋ถ๋ถ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeNVsz%2FbtrTGPdu5E5%2FUrJcLROyoIxD8tKz2tDoG1%2Fimg.jpg)
๋ ๋ฒ์งธ ํฌ๋ ๋ฆฌ์คํธ react-router-dom, styled-components์ redux์ ๋ํด ์ข ๋ ๊ณต๋ถํ ํ์ ๊ธฐ์ด ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ ๊ทธ๋ ์ด๋ํด์ ๋ค์ ํ๋ฒ ๋ง๋ค์ด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค. ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๋ฉฐ UI/UX ์ ์ผ๋ก๋, ๊ธฐ์ ์ ์ผ๋ก ๊ณ ๋ฏผํ๋ ๋ถ๋ถ๋ค๊ณผ ๊นจ๋ฌ์ ์ .. ๊ฐ์ ๊ฒ๋ค์ ํ๊ณ ํด๋ณด๋ ค ํ๋ค. ์์ฑ๋ ํฌ๋๋ฆฌ์คํธ๋ฅผ ๋ฐฐํฌํ ๋งํฌ๋ ์๋! https://todolist-redux-theta.vercel.app/ React App todolist-redux-theta.vercel.app UI/UX ์ง๋๋ฒ์ ๋ง๋ค ๋๋ ๊ฝค ์์ ๋ถ๋ฐฉํ๊ฒ ๋ง๋ค์ด๋ดค์ผ๋ ์ด๋ฒ์๋ ์๊ตฌ๋๋ ํ์ ์ ์งํ๋ ์ฌ์ฉ์์ ํธ์๋ฅผ ์๊ฐํด์ ๋ ์ด์์์ ์ง๋ณด์๋ค. ํฌ๋ ํ๋จ๋ถ์ ๋ฒํผ์ ์ฐ์ ์์๋ฅผ ๋ฐ์ก์ ๋, ์ ์ ์ ์ฅ์์๋ '์๋ฃ'๊ฐ ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblS7j7%2FbtrTEQDdO2a%2FRCbAprnLvPyozbAs2pS6aK%2Fimg.png)
๋ค์ด๊ฐ๋ฉฐ ์น์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๊ธฐ ์ํด์๋ ์ด๋ค ์์ผ๋ก ์ ์กํ๊ณ ์ด๋ค ๊ฒฝ๋ก(End-point)์ ์ ๋ฌํ ์ง๋ฅผ ์ค์ํ๊ฒ ๋ณธ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ๋ฐ๋ ๋ฐฉ์์ผ๋ก๋ GET, POST ๋ฑ์ HTTP ๋ฉ์๋๊ฐ ์๊ณ , ๊ด๋ จํด์ REST API๋ผ๋ ๊ฐ๋ ์ด ์๋ค. ๊ทธ๋ณด๋ค ์ด๋ฒ ๊ธ์์๋ ๊ฒฝ๋ก์ ๋ํด์, ๊ทธ ์ค์์๋ Query Parameter์ Path Variable์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. Query Parameter (Query String) ์ ์ด๋ฏธ์ง๋ ์ฐ๋ฆฌ๊ฐ ํํ๊ฒ ๋ณด๋ URL์ ๊ตฌ์กฐ์ด๋ค. ์ฌ๊ธฐ์ ? ์ดํ๋ถํฐ ์์๋๋ Parameters๋ผ๋ ๋ถ๋ถ์ด ๋ฐ๋ก Query Parameter์ด๋ค. ํํ Query String, ์ฟผ๋ฆฌ ์คํธ๋ง์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค. ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฐ์ ํํ! Query St..
Comment