๐ Study Note/React10 ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์ต์ ํ ๋ฆฌ์กํธ ๋ฆฌ๋ ๋๋ง 1. props, state ๋ณ๊ฒฝ ์ ๋ฆฌ๋ ๋๋ง 2. ๋ถ๋ชจ์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง์ ์์ ์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง ๋ฆฌ์กํธ์์๋ ์์ ์กฐ๊ฑด์ผ๋ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๋๋ฐ ์ด๊ฒ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค. React.memo React.memo ๋ ๊ณ ์ฐจ ์ปดํฌ๋ํธ (HOC) ๋ก ํจ์ & ํด๋์ค ์ปดํฌ๋ํธ์์ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค. React.memo์ ํตํด ์ต์ ํ๋ฅผ ํ ๊ฒฝ์ฐ ๋ ๋๋ง์ ๋ ๋ props๋ฅผ ์ฒดํฌํ์ฌ ์ด์ props์์ ๋ณํ๊ฐ ์๋ค๋ฉด ๋ ๋๋ง์ ํ๊ณ ๋ณํ๊ฐ ์๋ค๋ฉด ๊ธฐ์กด์ ๋ ๋๋ง๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. React.memo๋ ์ค์ง props์ ๋ณํ์๋ง ์์กดํ๋ ์ต์ ํ ๋ฐฉ๋ฒ! ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ useState, useReducer, useContext๋ฅผ ํตํด state๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํฉ๋๋ค. funtion A.. 2023. 2. 12. ๊ฐ์๋ - Virtual DOM ๋ฆฌ์กํธ ๊ฐ์๋ - React Virtual DOM DOM DOM์ด๋ Document Object Model์ ์ฝ์์ด๋ฉฐ, ์นํ์ด์ง์ ๋ค์ด๊ฐ๋ element ์์๋ค์ tree ํํ์ ์๋ฃ๊ตฌ์กฐ๋ก ํํํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ element์๋ DOM API๊ฐ ์์ด์ DOM์ ์กฐ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ ๋ฆฌํ๋ก์ฐ ๋ฆฌํ์ธํธ๊ฐ ๋ฐ์ํ์ฌ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋๋ฐ์ ์ด๊ฒ์ ๋ฆฌ์กํธ์์๋ ๊ฐ์๋์ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค. Virtual DOM ๊ฐ์๋์ ์ค์ DOM์ ๋ณต์ฌ๋ณธ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ํํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ์ด๊ฒ๋ค์ DOM์ ๋ณต์ฌ๋ณธ์ผ๋ก์จ ๋ชจ๋ element , ์์ฑ๋ค์ ๊ฐ์ง๊ณ ์์ง๋ง ๋ธ๋ผ์ฐ์ ์ ์ง์ ์ ๊ทผํ์ฌ DOM์ ์กฐ์ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. (DOM API๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์) ๋ฆฌ์กํธ๋ 2๊ฐ.. 2023. 2. 11. Pomodoro - TS, React, Tailwind CSS ์ด๋ฒ์ frontend mento ์ฌ์ดํธ์์ ๊ฐ๋จํ ํ์ด๋จธ๋ฅผ ๋ง๋ค์ด ๋ดค์ต๋๋ค. ์ฌ์ฉํ ๊ธฐ์ ์คํ typescript react tailwind css headlessui react-countdown-circle-timer ๊ตฌํ ์ฌํญ 1. ๋ฐ์ํ (๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, pc) 2. ํ์ด๋จธ 3. ํ๊ฒฝ ์ค์ ๋ชจ๋ฌ 4. ์๊ฐ, ํฐํธ, ์๊น ์ค์ 1. ๋ฐ์ํ ๊ตฌํ tailwind css๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ํ ๋์์ธ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ tailwind css๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ํ์ํ ์๊น, ํฐํธ, ์ฌ์ด์ฆ ๋ฑ์ tailwind.config์ ์ธํ ํด ์ค๋๋ค. 2. ํ์ด๋จธ ๊ตฌํ ํ์ด๋จธ ๊ตฌํ์ react-countdown-circle-timer ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ์์ต๋๋ค. 3. ํ๊ฒฝ ์ค์ ๋ชจ๋ฌ ๋ฐ ํ ํ๋ฉด ํญ๋ฐ.. 2023. 1. 2. ์ธ๋ถ ํด๋ฆญ ์ด๋ฒคํธ - React ์ฌ์ด๋ ๋ฐ๊ฐ ์ด๋ ค์์ ๋, ์ธ๋ถ ํด๋ฆญ์ ํ๋ฉด ์ฌ์ด๋ ๋ฐ๋ฅผ ๋ซ์์ฃผ๋๊ฒ์ ๊ตฌํํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด ์ธ๋ถ ํด๋ฆญ ์ ์ด๋ฒคํธ๋ฅผ ์ฃผ์์ต๋๋ค. ์ ์ฒด ์ฝ๋ 2022. 10. 5. react ์์ redux ์ฌ์ฉํด๋ณด๊ธฐ! (1) ์ด๋ฒ ํ ํ๋ก์ ํธ์์ redux์ ์ฌ์ฉํ ์ผ์ด ์์ด ๊ณต๋ถ๋ ํ ๊ฒธ ์ ๋ฆฌํด๋ด ๋๋ค! ์ฐ์ redux๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์์์ผ ํ 4๊ฐ์ง ๊ฐ๋ ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๋ฉด 1. redux ๋ณต์กํ ์ํ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ ๋์์ด ๋๋ ์ํ ๊ด๋ฆฌ ๋๊ตฌ์ด๋ฉฐ ์์ธก์ด ๊ฐ๋ฅํ๋ค. ์ค์ ๋ฐ์ดํฐ ์ ์ฅ์ (CDN)๋ฅผ ํตํด ์ ์ฒด ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌํ ์ ์๋ค. 2. reducers ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋กญ๊ฒ ์ ๋ฐ์ดํธ๋ ์ํ๋ฅผ ๋ฐํํด์ค๋ค. 3. actions actions๋ type, payload ๋ ๊ฐ์ง ์์ฑ์ ๊ฐ์ง๋ฉฐ type๋ ๊ณ ์ ์๋ณ์ payload๋ ๋์คํจ์น์ ๋ํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์๋ค. 4. dispatch ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ actions๋ฅผ ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ค. Redux ์ฌ์ฉ 1. react์์ redux๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด.. 2022. 9. 17. Netlify ๋ฐฐํฌ ์๋ฌ ํด๊ฒฐ - React Router Dom ์ต๊ทผ ํ๋ก์ ํธ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ณ Netlify๋ก ๋ฐฐํฌ๋ฅผ ํ์ต๋๋ค. ๊ทธ ๊ณผ์ ์ค์ ์๋ ์๋ฌ ํด๊ฒฐ ๊ณผ์ ์ ๊ธ๋ก ๋จ๊น๋๋ค.!! Netlify๋ฅผ ์ ํํ ์ด์ ๋ ๋ฐฐํฌํ๋ ๊ณผ์ ์ด ์ฝ๊ณ , ๋ฌด๋ฃ์ธ ์ ๊ทธ๋ฆฌ๊ณ ๊นํ๋ธ์ ์ฐ๋ํ ๋ฐฐํฌ ํ๊ฒฝ์ฐ push ๊ฐ ์์ ๋ ์๋์ผ๋ก ์ฌ ๋น๋๋ฅผ ํด์ฃผ๋ ์ ๋๋ฌธ์ Netlify๋ฅผ ์ ํํ์ฌ ๋ฐฐํฌํ์์ต๋๋ค. ํ์ง๋ง ๋ฐฐํฌ ๊ณผ์ ์ค ์๋ฌ๊ฐ ๋ง์ด ๋์๊ณ ํนํ "build.command" failed ๋ถ๋ถ์์ ์๊ฐ์ ๋ง์ด ๋ญ๋นํ์ต๋๋ค. ๋ค๋ฅธ ๋ธ๋ก๊ทธ์ Netlify ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฒ์ํด์ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ 1. package.json์ scripts์ build์์ "CI = react-scripts build" ์คํจ!, ํฐ๋ฏธ๋์์ ์คํ ์๋จ 2. package.json์์ ๋ฐฐํฌํ ์ฃผ์๋ฅผ homepage์ ์ ๋ ฅ .. 2022. 9. 2. Toast ui editor - Failed to parse source map ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์์ ์ผ๋ก ์ค์นํ๊ณ ๋ฒ์ ์๋ฌ๋ฅผ ํด๊ฒฐํ๋ ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ์ด ๋ฐ์ํฉ๋๋ค. ์ ํ ํ๋ ๋ฐ๋ ๋ฌธ์ ์ ์ด ์์ง๋ง.. ๊ณ์ ๋ณด์ด๋ ๊ฒ ๋ง์์ ์ ๋ค์ด์ ์์ ํด ๋ด ๋๋ค. ์ด ๊ฐ์ ๋ฌธ์ ๋ toast ui editor ๊น ํ ์ด์์๋ ์ฌ๋ผ์ ์๋๋ฐ์ https://github.com/nhn/tui.editor/issues/2137 Failed to parse source map (@toast-ui/editor/dist/purify.js.map) · Issue #2137 · nhn/tui.editor Describe the bug Cant parse the source map for toast-ui/editor Compiled with warnings. Failed to parse source map fro.. 2022. 8. 30. Toast ui editor ๋ฆฌ์กํธ ๋ฒ์ ์๋ฌ ์ด๋ฒ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ธ ์์ฑ markdown์ด ํ์ํ์ต๋๋ค. ๊ทธ๋์ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ toast ui editor์ด ๋ฌธ์ํ๋ ์๋์ด ์๊ณ , ์ปค์คํ ์ ํ ์ ์๋ ์ , ๋์์ธ์ด ์์ ์ ์ ๊ณ ๋ คํด์ toast ui editor ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. ํ์ง๋ง ์๋์ ๊ฐ์ด ์ค์นํ๋๊น ๋ฒ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์์ธํ ์ดํด๋ณด๋ฉด toast-ui-editor๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฆฌ์กํธ 17.0.1๊น์ง ์ง์ํ๋ค๊ณ ๋์ด ์์ต๋๋ค. ๊ทธ๋์ ํฐ๋ฏธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅ ํด์ค๋๋ค. npm install react@^17.0.1 react-dom@17.0.1 ํ์ง๋ง ๋ฒ์ ์ ๋ค์ด ๊ทธ๋ ์ด๋ ํ๋ฉด ๋ ๋ค๋ฅธ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฆฌ์กํธ ๋ฒ์ 18์์๋ ์์ ๊ฐ์ด ReactDOM์ import ํ์ง๋ง ๋ฒ์ 17์์๋ client๋ฅผ ์ ๊ฑฐํด.. 2022. 8. 30. React Router dom v6 - React Protected Routes React Router dom์ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์งํ ์ค ๋ก๊ทธ์ธ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ณด์ด๋ ๊ฒฝ๋ก๋ฅผ ๋ค๋ฅด๊ฒ ํ ๋ฐฉ๋ฒ์ด ์์๊น! ๊ณ ๋ฏผํ๋ค ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌ ํด๋ด ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๋ก๊ฐ ์๊ณ , 1. ๋ก๊ทธ์ธํ์ง ์์ ์ ์ ๋ "/todo" ๊ฒฝ๋ก๋ก ์ด๋ํ ๊ฒฝ์ฐ "/" ๊ฒฝ๋ก๋ก ๋ฆฌ๋ค์ด๋ ํธ ํ๋ค.๋ผ๋ ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด utils ํด๋์ PrivateRoutes.jsx ํ์ผ์ ์์ฑํ์ฌ ์๋์ ๊ฐ์ด ์์ฑํด์ค๋๋ค. Context API๋ฅผ ์ฌ์ฉํด์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ๊ด๋ฆฌํด์คฌ๋๋ฐ, ์ด๋ ๋ก๊ทธ์ธ๋์ง ์์ ๊ฒฝ์ฐ, "/" ๊ฒฝ๋ก๋ก ๋ฆฌ๋ค์ด๋ ํธ ํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ์ธ๋ ๊ฒฝ์ฐ Outlet๋ฅผ ์ฌ์ฉํด์ ์์ ๊ฒฝ๋ก ์์๋ฅผ ๋ ๋๋ง ํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ App ์ปดํฌ๋ํธ์์ Private ๊ฒฝ๋ก์ ๋ผ์ฐํธ์ ์์ฑํ PrivateRoute.. 2022. 8. 24. ์ด์ 1 2 ๋ค์