์๋ฒ ์ฃผ์๋ฅผ ๋ ธ์ถ์ํค์ง ์๊ธฐ ์ํด .env ํ์ผ์ ์ด์ฉํด์ ํ๊ฒฝ๋ณ์๋ฅผ ์ ์ฉํด๋ณด๊ธฐ๋ก!.. ์์ฃผ ์ฐ๋ ๊ฒฝ๋ก๋ ๊ฐ์ด ์๋ค๋ฉด ํ๊ฒฝ๋ณ์๋ฅผ ์ด์ฉํด์ ํธํ๊ฒ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค. ๋จผ์ .env ํ์ผ์ ๋ง๋ค์ด์ ๋ณ์๋ฅผ ๋ง๋ค์ด์ค๋ค. ๋ณ์ ์ ์ธ ๋ฆฌ์กํธ์์ ์ฌ์ฉํด์ฃผ๋ ค๋ฉด ์์ REACT_APP ํค์๋๋ฅผ ๊ผญ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค. url ์ฃผ์๋ฅผ ๋ฃ๋๋ค๋ฉด ๊ตณ์ด ๋ฐ์ดํ๋ก ๊ฐ์ธ์ฃผ์ง ์์๋ ๋๋ค! ๋ณ์ ์ฌ์ฉ ์๋์ ๊ฐ์ด process.env.[๋ณ์์ด๋ฆ]์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค. await axios.patch(`${process.env.REACT_APP_API_URL}/articleComment/${id}`,{...comment,}); ์ฒ์์๋ ์๋์ฒ๋ผ ์ฌ์ฉํ์๋๋ฐ ๊ณ์ 404 ์ค๋ฅ๊ฐ ๋ด๋ค.. ๐ ์ ์ธํ ๋ณ์๋ช ๊ทธ๋๋ก ๋ฃ์ด์ค์ผ ํ๋๋ฏ! awai..
12์ ๋ท์งธ ์ฃผ๋ฅผ ๋ณด๋ด๋ฉฐ ๋ ์จ๊ฐ ์ด๋ง๋ฌด์ํ๊ฒ ์ถ์์ง ์ด๋ฒ ์ฃผ.. ๋ชฉ์์ผ๋ถํฐ ํ๋ก์ ํธ๊ฐ ์์๋์๋ค. ํฌ๋ฆฌ์ค๋ง์ค์ ํ๋ก์ ํธ๊ฐ ๊ฒน์น๋ค๋ ๋๋ฌด๋... ๐ฅบ ๋ฒ์จ ์บ ํ ๊ธฐ๊ฐ์ ๋ฐ์ ์ด ๋์ด๊ฐ๋ค๋ ์๊ฐ์ด ์ ๋ง ๋ ์๊ฐ๋ ๊ฒ ๊ฐ๋ค.. ๐ Fact JSON-server๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ ๋ฐ๋ ์ํ๊ณผ์ ๋ฅผ ํด๋๋ค! ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค. ์ฌํ ์ฃผ์ฐจ ๊ฐ์๋ฅผ ๋ค์๋ค. ํ๋ก์ ํธ ์์๊น์ง ์๊ณ ๋ฆฌ์ฆ์ ํ์๋ค. ๐ Feeling ์ ๋ฐ๋ ๊ณผ์ ์ฝ๋๋ฆฌ๋ทฐ์์ '์ผํ๊ณ ์๋ ์ ์ ๊ฐ๋ฐ์๊ฐ๋ค'๋ ์นญ์ฐฌ์ ๋ค์๋ค. ์ฒ์ ๋ฐ์ ์ฝ๋๋ฆฌ๋ทฐ์๋๋ฐ ๋ฟ๋ฏ ๐ ์๋กญ๊ฒ ์๊ฒ ๋ ์ง์๋ค์ด ๋ง๋ค. ์ฌ๋ฐ๊ฒ ๋ฐฐ์ฐ๋ ์ค! ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ฅผ ๋ค์ ์ง์คํด์ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ.. ์ฝ์ง ์๋ค. ํ์ฅ์ผ๋ก์ ์ ํ๊ณ ์๋๊ฑธ๊น? ํ๋ ์๊ฐ์ด ์ข ์ข ๋ ๋ค. ๐ค ๐ Finding JSON..
ํ์ด์ง๋ค์ด์ ? ๋ฌดํ ์คํฌ๋กค? ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฒ์๊ธ ์ฝํ ์ธ ์๊ฐ ๋๋ฌด ๋ง์์ง ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ ํ์ด์ง๋ค์ด์ ์ด๋ ๋ฌดํ์คํฌ๋กค์ ์ ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค. ๊ฒ์๊ธ ํน์ฑ์, ํ๋จ์ ๊ธ์ฐ๊ธฐ ๋ฒํผ์ด ํญ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฌดํ์คํฌ๋กค๋ณด๋ค๋ ํ์ด์ง๋ค์ด์ ์ด ๋ ์ ํฉํ๊ฒ ๋ค๋ ์๊ฐ์ผ๋ก!.. ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํด๋ณด๊ธฐ๋ก ํ๋ค. 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 ..
ํ๋ก์ ํธ ์ ๋ 2์ผ ์ฐจ ํน๊ฐ์ด๋ ์บ ํ ๋ด ํฌ๋ฆฌ์ค๋ง์ค ์ด๋ฒคํธ ๋ฑ ์ผ์ ์ด ์ข ์๋ ํ๋ฃจ์ฌ์ ์๊ฐ๋ณด๋ค ์์ ์๊ฐ์ด ๊ธธ์ง ์์๋ ๊ฒ ๊ฐ์ ํ๋ฃจ! ์ฐ์ ์ค๋ ์คํ๊น์ง UI ์์ ์ ๋ง๋ฌด๋ฆฌํ๊ธฐ๋ก ํ์๊ณ , ์๋ฒฝํ๋ ์๋์ง๋ง ๋๋ถ๋ถ์ UI ์์ ์ด ๋ง๋ฌด๋ฆฌ๋์๋ค. UI ์์ ์ด ๋ง๋ฌด๋ฆฌ๋ ํ ๋ฐ๋ก ๊ธฐ๋ฅ ๊ตฌํ์ ๋ค๋ค ์์!.. ์ด๋ฒ ํ๋ก์ ํธ๋ gitflow ๋ฐฉ์์ผ๋ก ํ์ ํ๊ณ ์์ด์, dev ๋ธ๋์น์ ๊ฐ์์ ๋ธ๋์น์์ ์์ ํ ๊ฒ์ PR ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์งํ๋๊ณ ์๋ค. 2์ผ ์ฐจ์ ์งํ๋ PR๋ค์ ์ด๋ ๋ค! ์ค๋์ ์ด์๊ฐ ์์๋ค๋ฉด, ๊ธฐ๋ฅ ๊ตฌํ์ด ๋ฒ ์ฐฌ ํ์๋ค์๊ฒ ๋ง์ ๊ธฐ๋ฅ์ด ๋ฐฐ๋ถ๋ ๊ฒ ์๋๊ฐ ์ถ์ด์ ์์๋ฅผ ํตํด ์ด์ง ๋์ด๋ธ ์ ์ด ์๊ฒ ๋ค. ๋ ์ฃผ๋ฅ๋ณ ๋ฆฌ์คํธ๋ฅผ ๋ ๋๋ง ํ๋ ๊ณผ์ ์์ UI ์ปดํฌ๋ํธ๊ฐ ์กฐ๊ธ ๋ณต์กํ๊ฒ ์ง์ฌ์ map์ ์ฌ๋ฌ ๋ฒ ๋๋ฆด ..
ํ๋ก์ ํธ ์ ๋ 1์ผ ์ฐจ ์๋ก์ด ํ๋ก์ ํธ๊ฐ ์์๋์๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ ๋ฆฌ์กํธ์ ๋ฆฌ๋์ค, JSON-server๋ฅผ ์ด์ฉํด์ CRUD๋ฅผ ๋ง๋๋ ๊ฒ~ ์ฃผ์ , ์ฃผ์ ๊ธฐ๋ฅ ์ฃผ์ ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ๋์์๋๋ฐ, ๋ด๊ฐ ์ ์ํ ์ฃผ๋ฅ ์ปค๋ฎค๋ํฐ๊ฐ ์ ํ๋์๋ค. ์ ์ฃผ๊ฐ๋ค์ ์ปค๋ฎค๋ํฐ! ์ฃผ์ ๊ธฐ๋ฅ์ ์ด๋ ๋ค. ์ ์ข ๋ฅ๋ฅผ ์ํฐํด๋ก ์๊ฐ ์ ์ ๋ํด ํ์ ์ ๋๊ธ๋ก ๋จ๊ธธ ์ ์์ ์ปค๋ฎค๋ํฐ ์ด์ฉ์๋ค๋ผ๋ฆฌ ๊ฒ์๊ธ๊ณผ ๋๊ธ์ ์์ฑํ ์ ์์ ์์ด์ด ํ๋ ์ ์์ฑ๋ ์์ด์ด ํ๋ ์์ ์ด๋ ๋ค. ํ๋ก์ ํธ ์ด๋ฆ ๊ฒธ ์๋น์ค ์ด๋ฆ์ ๊ดํด์๋ ๋ง์ ์์ด๋์ด๊ฐ ๋์๋ค๊ฐ, ์๋ฌด ์๊ฐ ์์ด ์ ๋ ฅํ ์ ๋ ์ ๋ ์ด ์ฑํ๋๋ค (ใ ใ ) ํ๋ค๋ฅ ๋น ๋ฅด๊ฒ ๋ง๋ค์ด๋ณธ ๋ก๊ณ 1์, 2์์ค 2์์ด ์ ํ๋์๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ, DB ์ฐ๋ฆฌ๋ ์ด๋ฒ์ ์ข ๋ ๊ธฐ๋ฅ ๊ตฌํ์ ์ง์คํ๊ธฐ ์ํด ๋ง์ด๋ค ์ฌ์ฉํ๋ค๋ Ma..
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 ๊ณต์ ๋ฌธ์๋ ์ด์ชฝ์์ ํ..
Comment