์ ์ฒด ๊ธ
-
- [React.js] ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)
๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ๋ผ์ฐํ ์ ํ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.v6์ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํ์๋ค. ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ ํํ ๋ ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ๋ URL์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ์ ์๋ค. ๊ตฌ์ฑ ์์BrowserRouterHTML5์ History API๋ฅผ ์ฌ์ฉํ์ฌ URL์ ๊ด๋ฆฌํ๋ค.์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์์ ์ปดํฌ๋ํธ๋ก ์ฌ์ฉ๋๋ค. Routes๊ฐ ๊ฒฝ๋ก์ ๋ํ ๋ผ์ฐํธ๋ฅผ ์ ์ํ๋ ์ปจํ ์ด๋ํ๋ ์ด์์ @Route@๋ฅผ ์์์ผ๋ก ๊ฐ์ง ์ ์๋ค. Ro..
2024.09.26 -
- [React.js] ๋ผ์ฐํ ๊ด๋ จ ๊ธฐ๋ฅ๋ค ์ ๋ฆฌ (React Router) : useNavigate, useNavigation, redirect, useLocation, useParams, useHistory, Navigate
๋ผ์ฐํ ๊ด๋ จ ๊ธฐ๋ฅ๋ค ์ ๋ฆฌ (React Router) : useNavigate, useNavigation, redirect, useLocation, useParams, useHistory, Navigate๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ๋ผ์ฐํ ์ ์ํด ์ฌ์ฉ๋๋ ๊ด๋ จ ๊ธฐ๋ฅ๋ค์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค.ํ์ด์ง ์ด๋ ๋ฐ ๋ผ์ฐํ ์ ์ํด ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์ ์ฌ๋ฌ ํ ๊ณผ ์ปดํฌ๋ํธ, ํจ์๋ค์ ์ฌ์ฉํ ์ ์๋ค. โ useNavigate()๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router) v6 ์์ ์ ๊ณตํ๋ ํ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.์ปดํฌ๋ํธ ๋ด์์ ๋ฒํผ ํด๋ฆญ, ์ด๋ฒคํธ ๋ฐ์ ์ ํน์ ํ์ด์ง๋ก ์ด๋ํ ๋ ์ฌ์ฉํ๋ค. ํน์ง@push@์ @replace@๋ฅผ ์ค์ ํ ์ ์์ด ํ์คํ ๋ฆฌ์ ์ถ๊ฐ..
1 2024.09.26 -
- [React.js] ํผ ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๊ธฐ (React, React Router)
ํผ ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๊ธฐ (React, React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React)์์ ํผ(@@) ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ํผ(Form, @@)๊ฐ๋ HTML์์ ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์๋ฒ๋ก ์ ์กํ๊ธฐ ์ํ ์์๋ก๊ทธ์ธ, ํ์๊ฐ์ , ๊ฒ์ ๋ฑ ์ฌ์ฉ์ ์ ๋ ฅ์ด ํ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฌ์ฉ๋๋ค. Name: Email: Submit ํน์ง@@ ์์์์ @method@ ์์ฑ์ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก @GET@ ์์ฒญ์ด ์ํ๋๋ค.์ด๋, @@ ์์ ์์ @@์์์ ๊ฐ์ URL์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ํฌํจํ์ฌ ์๋ฒ๋ก ์ ์กํ๋ค.์์ฑ์ ๊ฐ์ @POST@๋ก ์ง์ ํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ๋ณธ๋ฌธ์ ํฌํจํ์ฌ ์๋ฒ๋ก ์ ์กํ๋ค.@@ ์์์ @action@ ์์ฑ์ ๊ฐ์ ํผ์ ์ ์ถํ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์๋ฒ์ URL์ ..
1 2024.09.26 -
- [VS Code] vscode-icons : ๋ฆฌ์กํธ ์์ด์ฝ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
vscode-icons : ๋ฆฌ์กํธ ์์ด์ฝ ์ ์ฉํ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋(VS Code)์ @vscode-icons@ํ์ฅ์ @.jsx@ ํ์ฅ์์ ์์ด์ฝ์ด @.js@ ์์ด์ฝ์ผ๋ก ํ์๋ ๋, ์๋์ผ๋ก ๋ฆฌ์กํธ ์์ด์ฝ์ผ๋ก ํ์๋๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ@[Ctrl]@ + @[Shift]@ + @[P]@๋ฅผ ๋๋ฅธ ํ, @Command Pallette@๋ฅผ ์คํํ๋ค.@settings@ ๋ฅผ ํ์ดํ ํ ํ, @Preferences: Open User Settings (JSON)@์ ํด๋ฆญํ๋ค.์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ค๋ค.settings.json{ "vsicons.associations.files": [ { "icon": "reactjs", "extensions"..
2024.09.25 -
- [Information] CMS(Content Management System)
CMS(Content Management System)๋ค์ด๊ฐ๋ฉฐCMS(Content Management System)์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. CMS(Content Management System)๊ฐ๋ ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ ์น์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝํ ์ธ ๋ฅผ ์์ฑ, ๊ด๋ฆฌ, ์์ , ๋ฐฐํฌํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ํํธ์จ์ด๊ธฐ์ ์ ์ธ ์ง์์ด ์๋ ์ฌ์ฉ์๋ ์ฝ๊ฒ ์น ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋์ด ์๋ค.๋ํ์ ์ธ ์๋ก WordPress, Joomla, Drupal ๋ฑ์ด ์๋ค.CMS๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ฉํ์ง ์๊ณ ๋ ํ ์คํธ, ์ด๋ฏธ์ง, ๋น๋์ค ๋ฑ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ค. ํน์ง๋น๊ฐ๋ฐ์๋ ์ฝ๊ฒ ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.์น์ฌ์ดํธ ๋์์ธ๊ณผ ๋ ์ด์์์ ๋ฏธ๋ฆฌ ์ ์๋ ํ ํ๋ฆฟ์ผ๋ก ์ค์ ํ ์ ์๋ค.๋ค์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ ํ๋ฌ๊ทธ์ธ๊ณผ ํ์ฅ ๊ธฐ๋ฅ์ ์ง์..
2024.09.25 -
- [React.js] ๋ฌดํ ์คํฌ๋กค(Infinite Scroll), ์ค์ผ๋ ํค(Skeleton) ํจ๊ณผ ์ ์ฉํ๊ธฐ (with React Query)
๋ฌดํ ์คํฌ๋กค(Infinite Scroll), ์ค์ผ๋ ํค(Skeleton) ํจ๊ณผ ์ ์ฉํ๊ธฐ (with React Query)๋ค์ด๊ฐ๋ฉฐReact Query๋ฅผ ์ด์ฉํ์ฌ ๋ฌดํ ์คํฌ๋กค(Infinite Scroll)๊ณผ ์ค์ผ๋ ํค(Skeleton) ํจ๊ณผ๋ฅผ ์ ์ฉํ ์์ ์ฝ๋๋ฅผ ์ฌ๋ ค๋ณธ๋ค.๊ฐ์ธ ๋ฏธ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ง๋ค์๋ ์ฝ๋์ด๋ค.๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๋ฉด, ํด๋น ๊ฒ์์ด์ ๊ด๋ จ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ํ๋ ์ฌ์ดํธUnsplash ๊ณต๊ฐ API๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ์๋ค. ์ฝ๋๋ฆฌ์กํธ ์ฟผ๋ฆฌ์ @useInfiniteQuery()@๋ฅผ ์ด์ฉํ์ฌ ๋ฌดํ ์คํฌ๋กค(Infinite Scroll) ๊ธฐ๋ฅ์ ๊ตฌํํ์๋ค.@IntersectionObserver@๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋กค์ด ํ์ด์ง์ ๋งจ ์๋์ ๋๋ฌํ์ ๋๋ง ๋ค์ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋๋ก ์ค์ ํ์๋ค.@useStat..
2024.09.23 -
- [React.js] .env ํ์ผ ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ)
.env ํ์ผ ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ๋ฅผ ์ํด @.env@ ํ์ผ์ ๋ง๋ค๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. @.env@ ํ์ผ๊ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ํ๊ฒฝ ๋ณ์(Environment Variables)๋ฅผ ์ ์ฅํ๋ ํ์ผํ๊ฒฝ ๋ณ์๋ ์ด์์ฒด์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ๊ฐ๋ค์ ์ธ๋ถ์์ ์ค์ ํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ณ์๋ค๋ก, ์ฝ๋์ ์ง์ ํ๋์ฝ๋ฉํ์ง ์๊ณ ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ ์ค์ ๊ฐ์ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค.๋ฆฌ์กํธ๋ ๋ ธ๋ ๊ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ @.env@ ํ์ผ์ ์ ์ฅํ๋ค.โ API ํค โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด โ API ์๋ํฌ์ธํธ โ ์ฑ ํ๊ฒฝ ์ค์ (๊ฐ๋ฐ, ํ ์คํธ, ํ๋ก๋์ ๋ฑ) ํน์ง์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฏผ๊ฐํ ์ ๋ณด๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ฌ..
2024.09.23 -
- [React.js] React Query Devtools
React Query Devtools๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ์ฟผ๋ฆฌ(React Query/Tanstack Query)์ ๊ฐ๋ฐ์ ๋๊ตฌ(Devtools)๋ฅผ ์ค์น ๋ฐ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. React Query Devtools๊ฐ๋ ์ํ ๊ด๋ฆฌ์ ์๋ฒ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๊ฐ๋ฐ ๋๊ตฌReact Query๊ฐ ๊ด๋ฆฌํ๋ ์ฟผ๋ฆฌ(Query)์ ๋ฎคํ ์ด์ (Mutation) ์ํ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ๋ฐ์ดํฐ ํ๋ฆ์ ์ถ์ ํ๊ณ , ๋ฌธ์ ๋ฅผ ํ์ ํ๊ฑฐ๋ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ๋์์ ์ค๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ฟผ๋ฆฌ ์ํ ํ์ธํ์ฌ ์คํ ์ค์ธ ๋ชจ๋ ์ฟผ๋ฆฌ์ ์ํ(์: @loading@, @success@, @error@ ๋ฑ)๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์๋ค.๋ํ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ, ์ฟผ๋ฆฌ ํค, ๋ง์ง๋ง์ผ๋ก ์ ๋ฐ์ดํธ๋ ์..
2024.09.22 -
- [Job Preparation] ์ฝ๋ฉ ํ ์คํธ ์ค๋น : ์๋ฃ๊ตฌ์กฐ (with Python)
์ฝ๋ฉ ํ ์คํธ ์ค๋น : ์๋ฃ๊ตฌ์กฐ (with Python)๋ค์ด๊ฐ๋ฉฐ์ฝ๋ฉ ํ ์คํธ ์ ์ ๊ฐ๋ณ๊ฒ ์ฝ์ด๋ณผ ์๋ฃ๊ตฌ์กฐ(Data Structure) ๊ด๋ จ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณธ๋คํ์ด์ฌ(Python) ์ฝ๋๋ก ์ ๋ฆฌํ์๋ค. ์๋ฃ๊ตฌ์กฐ(Data Structure)๋ฐฐ์ด(Array)์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ์ธ๋ฑ์ค(Index)๋ฅผ ํตํด ์์์ ์ ๊ทผํ ์ ์๋ค.ํ์ด์ฌ์ ๋ฆฌ์คํธ(@list@)๊ฐ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉ๋๋ค.arr = [1, 2, 3, 4, 5]print(arr[2]) # 3arr.append(6) # ๊ฐ ์ถ๊ฐarr.remove(3) # ๊ฐ ์ญ์ ์คํ(Stack)LIFO(Last In, First Out) ๊ตฌ์กฐ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋์จ๋ค.ํ์ด์ฌ์ ๋ฆฌ์คํธ(@list@)๋ฅผ ์คํ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, @appen..
1 2024.09.22 -
- [Job Preparation] ์ฝ๋ฉ ํ ์คํธ ์ค๋น : SQL
์ฝ๋ฉ ํ ์คํธ ์ค๋น : SQL๋ค์ด๊ฐ๋ฉฐ์ฝ๋ฉ ํ ์คํธ ์ ์ ๊ฐ๋ณ๊ฒ ์ฝ์ด๋ณผ SQL ๊ด๋ จ ๋ด์ฉ๋ค์ ์ ๋ฆฌํด๋ณธ๋ค. SELECT ๋ฌธ๊ธฐ๋ณธ ๊ฐ๋ ๋ฐ์ดํฐ ์กฐํํ๊ธฐSELECT column1, column2 FROM table_name; @DISTINCT@ ํค์๋๋ฅผ ์ด์ฉํ์ฌ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ์ ์๋ค.SELECT DISTINCT column1 FROM table_name; ๋ฐ์ดํฐ ํํฐ๋ง์กฐ๊ฑด์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ํํฐ๋งํ๊ธฐ@WHERE@ ์ ์ ์ด์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๋ค.SELECT * FROM table_name WHERE condition; ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ก @AND@, @OR@, @NOT@์ ์ฌ์ฉํ ์ ์๋ค.@IN@ ์ฐ์ฐ์๋ ์ฌ๋ฌ ๊ฐ ์ค ํ๋์ ์ผ์นํ๋ ๋ฐ์ดํฐ์ธจ ์ฐพ์ ๋ ์ฌ์ฉํ๋ค.SELECT * FROM tabl..
2024.09.22 -
- [Axios] HTTP ๋ฉ์๋
HTTP ๋ฉ์๋๋ค์ด๊ฐ๋ฉฐAxios์ ํจ๊ป HTTP ๋ฉ์๋์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. HTTP ๋ฉ์๋๊ฐ๋ HTTP(Hypertext Transfer Protocol) ๋ฉ์๋๋ ์น ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฑ์ ์์ ์ ์ํํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋์ด๋ค.์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ก๋ GET, POST, PATCH, DELETE๊ฐ ์์ผ๋ฉฐ, @fetch()@ ๋๋ Axios ๋ฑ์ ์ด์ฉํ์ฌ ์ด๋ฌํ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค. ์ข ๋ฅโ GET์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉ๋๋ค.์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ์กฐํํ๊ฑฐ๋, ์น ํ์ด์ง๋ฅผ ์ฝ๊ฑฐ๋, ํ์ผ์ ๋ค์ด๋ก๋ํ ๋ ์ฌ์ฉ๋๋ค.try { const response = await axios.get('/api/data'); console.log(response.data);} ..
1 2024.09.21 -
- [Axios] ์ ์ญ(Global)/์ปค์คํ (Custom) ์ธ์คํด์ค, ์ธํฐ์ ํฐ(Interceptor)
์ ์ญ(Global)/์ปค์คํ (Custom) ์ธ์คํด์ค, ์ธํฐ์ ํฐ(Interceptor)๋ค์ด๊ฐ๋ฉฐAxios์ ์ ์ญ(Global)/์ปค์คํ (Custom) ์ธ์คํด์ค, ์ธํฐ์ ํฐ(Interceptor) ๊ฐ๋ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ์ ์ญ ์ธ์คํด์ค(Global Instance)๊ฐ๋ Axios์ ๊ธฐ๋ณธ ์ธ์คํด์ค๋ฅผ ์ค์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ๋ชจ๋ Axios ์์ฒญ์ ๊ธฐ๋ณธ์ ์ธ ์ค์ (์: @baseURL@, @headers@ ๋ฑ)์ ์ ์ฉํ ์ ์๋ค. ์ค์ ๋ฐฉ๋ฒํ๋ก์ ํธ์ @src@ ํด๋ ์์ @axios@ ํด๋๋ฅผ ๋ง๋ค๊ณ , @global.js@ ํ์ผ์ ์์ฑํ๋ค.๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.import axios from 'axios';// In latest axios version common proper..
2024.09.20 -
- [Job Preparation] ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ (React.js)
๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ (React.js)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js) ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ ์ํด์ ํ์ํ ๊ณผ์ ๋ค์ ์ ๋ฆฌํด๋ณธ๋ค. Node.jsLTS ๋ฒ์ ์ผ๋ก ์ค์นํ๊ธฐLong Term Service, ์ฅ๊ธฐ ์ง์ ๋ฒ์ Node.js — Run JavaScript EverywhereNode.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.nodejs.org ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ NVM(Node Version Manager)๋ฅผ ์ค์นํ๋ค. Releases · coreybutler/nvm-windowsA node.js version management utility for Windows. Ironically written in Go. - coreyb..
1 2024.09.20 -
- [React.js] ์ฝ๋ ๋ถํ (Code Splitting) : useTransition ํ , Suspense ์ปดํฌ๋ํธ, lazy ํจ์
์ฝ๋ ๋ถํ (Code Splitting) : useTransition ํ , Suspense ์ปดํฌ๋ํธ, lazy ํจ์๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ฝ๋ ๋ถํ (Code Splitting)์ ์ฅ์ ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ @useTransition@ ํ ๊ณผ @Suspense@ ์ปดํฌ๋ํธ, @lazy@ ํจ์์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ์ฝ๋ ๋ถํ (Code Splitting)๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฝ๋์ ์ผ๋ถ๋ถ์ ๋๋ ์ ํ์ํ ์์ ์ ๋ก๋ํ๋ ๋ฐฉ์ ์ฅ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์์ ์ฒญํฌ(Chunk)๋ก ๋๋์ผ๋ก์จ ์ด๊ธฐ ๋ก๋ ์ ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ํฌ๊ธฐ๋ฅผ ์ค์ธ๋ค.์ด๋ฅผ ํตํด ์ฒซ ํ๋ฉด ๋ ๋๋ง ์๋๊ฐ ๋นจ๋ผ์ง๋ฉฐ, ๋๋ฆฐ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ๋น ๋ฅด๊ฒ ์๋ตํ ์ ์๋ค.์ฌ์ฉ์๊ฐ ํ์๋ก ํ์ง ์๋ ์ฝ๋๋ ๋์ค์ ๋ก๋๋๋ฉฐ, ์ํธ์์ฉํ ๋๋ง ํ์ํ ์ฝ๋๊ฐ ๋..
2024.09.20 -
- [React.js] useMemo ํ
useMemo ํ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์ @useMemo@ ํ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. useMemo ํ ๊ฐ๋ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ ์ต์ ํ(Optimization)๋ฅผ ์ํด ์์ฃผ ์ฌ์ฉ๋๋ ํ ํน์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)ํ์ฌ ์์กด์ฑ ๋ฐฐ์ด์ ์๋ ๊ฐ๋ค์ด ๋ณ๊ฒฝ๋์ง ์๋ ํ ํด๋น ์ฐ์ฐ์ ๋ค์ ์ํํ์ง ์๋๋ก ํ๋ค.๋ถํ์ํ ์ฌ์ฐ์ฐ์ ๋ฐฉ์งํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ์ฒซ ๋ฒ์งธ ์ธ์๋ ๋ฉ๋ชจ์ด์ ์ด์ ํ ๊ฐ์ ๋ฐํ(return)ํ๋ ํจ์์ด๋ค. (@computeExpensiveValue@).๋ ๋ฒ์งธ ์ธ์๋ ์์กด์ฑ ๋ฐฐ์ด(Dependency Array)๋ก, ์ด ๋ฐฐ์ด์ ๊ฐ๋ค์ด ๋ณ๊ฒฝ๋ ๋๋ง ๋ฉ๋ชจ์ด์ ์ด์ ๋ ๊ฐ์ด ๋ค์ ๊ณ์ฐ๋๋ค.const memoizedValue = useMemo(() => computeE..
2024.09.20 -
- [React.js] useCallback ํ
useCallback ํ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ฌ์ฉ๋๋ @useCallback@ ํ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. useCallback ํ ๊ฐ๋ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ ์ต์ ํ(Optimization)๋ฅผ ์ํด ์์ฃผ ์ฌ์ฉ๋๋ ํ ํจ์๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)ํ์ฌ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ ๋๋ง๋ค ํจ์๊ฐ ์ฌ์์ฑ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ@useCallback(() => {}, [])@์ ๊ฐ์ด ์ฌ์ฉํ๋ค.์ฒซ ๋ฒ์งธ ์ธ์๋ก ํจ์๋ฅผ ๋ฐ๊ณ , ๋ ๋ฒ์งธ ์ธ์๋ก ์์กด์ฑ ๋ฐฐ์ด(Dependencies Array)์ ๋ฐ๋๋ค.const memoizedCallback = useCallback(() => { doSomething(a, b);}, [a, b]); ⇒ ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ ๋๋ง๋ค ํด๋น ํจ์๋ฅผ ๋ค์ ์์ฑํ์ง ์๊ณ ,..
2024.09.20 -
- [React.js] React.memo()
React.memo()๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ ๊ณตํ๋ ๊ณ ์ฐจ ํจ์(Higher-Order Component)์ธ @React.memo()@์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. React.memo()๊ฐ๋ ๋ฆฌ์กํธ์์ ์ ๊ณตํ๋ ๊ณ ์ฐจ ํจ์(Higher-Order Component)ํจ์ํ ์ปดํฌ๋ํธ์ ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ๋ฐฉ์งํ๋ ์ญํ ์ ํ๋ค.์ ๋ฌ๋ @props@๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ํ ํด๋น ์ปดํฌ๋ํธ๋ ๋ค์ ๋ ๋๋ง๋์ง ์๋๋ก ์ต์ ํ(Optimization)ํ ์ ์๋ค.@React.memo()@๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ธ์๋ก ๋ฐ์, ๊ทธ์ ๋์ผํ ๋์์ ํ๋ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ์ง๋ง, ์ถ๊ฐ์ ์ผ๋ก @props@๊ฐ ๋ณ๊ฒฝ๋์๋์ง ํ์ธํ๋ ์ต์ ํ ์์ ์ด ์ถ๊ฐ๋๋ค.@props@๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ, ๋ฉ๋ชจ์ด์ ์ด์ ๋ ์ปดํฌ๋ํธ๋ ์ด์ ๋ ๋๋ง์์..
2024.09.18 -
- [React.js] Context API๋ฅผ ์ด์ฉํ์ฌ ์ ์ญ ์ํ ๊ด๋ฆฌํ๊ธฐ
Context API๋ฅผ ์ด์ฉํ์ฌ ์ ์ญ ์ํ ๊ด๋ฆฌํ๊ธฐ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ Context API๋ฅผ ์ด์ฉํ์ฌ ์ ์ญ ์ํ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.Context API๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ๋ก ํจํค์ง๋ฅผ ์ค์นํ์ง ์๊ณ ๋ ์ ์ญ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. Context API๊ฐ๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ์์ ์ ์ญ ์ํ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ API์ด ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ฉด, ํ๋กญ ๋๋ฆด๋ง(Props Drilling)์ ํผํ ์ ์๋ค. ๋ฐฉ๋ฒโ context ํ์ผ ์์ฑํ๊ธฐ์ ์ญ์ผ๋ก ์ฌ์ฉํ ์ํ๋ฅผ ์ ์ํ๋ @Context.js@ ํ์ผ์ ์์ฑํ๋ค. ./src/context.jsimport { createContext, useContext, useState } from 'react';// (1) Context ์์ฑํ๊ธฐco..
2 2024.09.11 -
- [React.js] react-toastify ๋ผ์ด๋ธ๋ฌ๋ฆฌ
react-toastify ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๊ฐ๋จํ๊ฒ ํ ์คํธ(Toast) ๋ฉ์์ง๋ฅผ ๋์์ผํ ๋ @react-toastify@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.@react-toastify@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. react-toastify ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ์ ๊ณตํ๋ ํ ์คํธ ๋ฉ์์ง(Notification)๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์คํ์ผ๊ณผ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ก ๊ฐ๋จํ๊ฒ ์๋ฆผ์ ๋์ธ ์ ์๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ์ด ๊ฐํธํ๋ฉฐ, ๋ค์ํ ์ฌ์ฉ์ ์ ์ ์ต์ ์ ์ ๊ณตํ์ฌ ์๋ฆผ์ ์ํ๋ ๋๋ก ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น$ npm install react-toastify # yarn add react-toastify ์ฌ..
2024.09.10 -
- [React.js] uuid, nanoid ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ (key)
uuid, nanoid ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ (key)๋ค์ด๊ฐ๋ฉฐ๋ค์๊ณผ ๊ฐ์ด @map@์ ์ด์ฉํ์ฌ ์์๋ฅผ ํ๋ํ๋์ฉ ํํํ ๊ฒฝ์ฐ @key@ ๊ฐ์ ์ง์ ํด์ผ ํ๋๋ฐ ์ด๋ค๊ฐ์ @key@ ๊ฐ์ผ๋ก ์ง์ ํด์ผํ ์ง ๋ชจ๋ฅผ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.์ด๋, @uuid@ ๋๋ @nanoid@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ์ด ๊ณ ๋ฏผ์ ํด๊ฒฐํ ์ ์๋ค.import { data } from './data.js';export default const App = () => { return ( {data.map((item) => {item.content}} )} uuid ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋ @uuid@๋ Universally Unique Identifier ์ ์ฝ์๋ก, ์ ์ธ๊ณ์์ ๊ณ ์ ํ ๊ฐ์ ์์ฑํ ์ ์๋ ์๋ณ์์ด๋ค.@u..
2024.09.09 -
- [React.js] ๋ก์ปฌ ์คํ ๋ฆฌ์ง(LocalStorage)์ ๋ด์ฉ์ ์ ์ฅํ๊ณ , ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Redux)์ ๋๊ธฐํ ํ๋ ๋ฐฉ๋ฒ
๋ก์ปฌ ์คํ ๋ฆฌ์ง(LocalStorage)์ ๋ด์ฉ์ ์ ์ฅํ๊ณ , ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Redux)์ ๋๊ธฐํ ํ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ํน์ ๋ณ์๋ฅผ ๋ก์ปฌ ์คํ ๋ฆฌ์ง(Local Storage)์ ์ ์ฅํ๊ณ , ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Redux)์ ๋๊ธฐํ ์ํค๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.์ด๋ ๊ฒ ํจ์ผ๋ก์จ, ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ํน์ ๋ณ์๋ฅผ ํ๋ฉด์ ํ์ํด์ค์ผ ํ ๊ฒฝ์ฐ ์๋ก๊ณ ์นจ์ ํด๋ ๋์ผํ ๋ด์ฉ์ด ํ์๋๊ฒ ํ ์ ์๋ค. ๋ก์ปฌ ์คํ ๋ฆฌ์ง(Local Storage)๊ฐ๋ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ ์ ์๋ ๋ฐฉ๋ฒ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋๋ฉฐ, ๋๋ฉ์ธ๋ณ๋ก ๊ตฌ๋ถ๋์ด ์ ์ฅ๋๋ค.๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ ํค-๊ฐ(Key-Value) ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ๋ฐ์ดํฐ๋ ๋ฌธ์์ด ํ์์ผ๋ก๋ง ์ ์ฅํ ์ ์๋ค.๋ฐ๋ผ์ ๊ฐ์ฒด(O..
1 2024.09.07 -
- [Python] try-except ๋ฌธ ์ฌ์ฉํ ๋ ์๋ฌ ๋ฐ์ ์, ์ ์ฒด ์๋ฌ ์ ๋ณด ํ์ ๋ฐฉ๋ฒ
try-except ๋ฌธ ์ฌ์ฉํ ๋ ์๋ฌ ๋ฐ์ ์, ์ ์ฒด ์๋ฌ ์ ๋ณด ํ์ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ@try-except@ ๋ฌธ์ ์ฌ์ฉํ ๋, ์๋ฌ๋ฅผ ํ์ํ๊ณ ์ถ์ ๋๊ฐ ์๋ค.๋ค์๊ณผ ๊ฐ์ด ์๋ฌ๋ฅผ ํ์ํ ๊ฒฝ์ฐ, ์๋ฌ ์ ๋ณด ์ค 1์ค ์ ๋๋ง ์งง๊ฒ ์ถ๋ ฅ๋๋ค.์ด๋ 1์ค์ด ์๋, ์ฌ๋ฌ ์ค์ ๋ชจ๋ ์๋ฌ ์ ๋ณด๊ฐ ํ์๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.try: print(1 / 0)except Exception as e: print(e)division by zero ๋ฐฉ๋ฒ@traceback@ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ@traceback@ ๋ชจ๋์ @import@ํ์ฌ @try-except@ ๋ฌธ์ ์์ธ ์ฒ๋ฆฌ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.import tracebacktry: print(1 / 0)except Exception as e: ..
2 2024.09.07 -
- [JavaScript] fetch() API์ Axios์ ์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ๋น๊ต
fetch() API์ Axios์ ์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ๋น๊ต๋ค์ด๊ฐ๋ฉฐFetchAPI์ Axios์ ์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ๋น๊ตfetch() API๊ธฐ๋ณธ์ ์ผ๋ก ๋คํธ์ํฌ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์๋์ง๋ฅผ ์ํ ์ฝ๋(Status Code)๊ฐ ์๋, ๋คํธ์ํฌ ์ค๋ฅ ์ฌ๋ถ๋ก ํ๋จํ๋ค.์ฆ, ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์ ๋๋ก ๋์ด ์๋ฒ์ ์์ฒญ์ด ์ ๋ฌ๋๊ณ , ์๋ฒ๋ก๋ถํฐ ์๋ต์ด ์๋ค๋ฉด, ๊ทธ ์๋ต์ด 200๋ฒ๋(์ฑ๊ณต) ์ํ ์ฝ๋์ธ์ง, 400๋ฒ๋(ํด๋ผ์ด์ธํธ ์ค๋ฅ) ๋๋ 500๋ฒ๋(์๋ฒ ์ค๋ฅ) ์ํ ์ฝ๋์ธ์ง์ ์๊ด์์ด ์์ฒญ์ด '์ฑ๊ณต์ ์ผ๋ก' ์๋ฃ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.์ด ๊ฒฝ์ฐ @fetch()@๋ ํ๋ก๋ฏธ์ค(Promise)๋ฅผ ์ฑ๊ณต ์ํ๋ก ๋ฐํํ๋ฉฐ, ์๋ต ๊ฐ์ฒด๋ฅผ @resolve@ํ๋ค.์ด ๋๋ฌธ์ 4xx ๋๋ 5xx์ ..
2024.08.30 -
- [JavaScript] ์ ๊ฐ ์ฐ์ฐ์ (Spread Operator, ...)
์ ๊ฐ ์ฐ์ฐ์ (Spread Operator, ...)๋ค์ด๊ฐ๋ฉฐ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript)์์ ์ฌ์ฉํ ์ ์๋ ์ ๊ฐ ์ฐ์ฐ์(Spread Operator, @...@)์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ์ ๊ฐ ์ฐ์ฐ์(Spread Operator, @...@)๊ฐ๋ ๋ฐฐ์ด(Array)์ด๋ ๊ฐ์ฒด(Object)๋ฅผ ์ฝ๊ฒ ํ์ฅํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์๋ ๊ธฐ๋ฅ๋ฐฐ์ด, ๊ฐ์ฒด, ํจ์ ํธ์ถ์์ ๋ค์ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.๋ฐฐ์ด์ ๋ณํฉ & ๋ณต์ฌ๊ฐ์ฒด์ ๋ณํฉ & ๋ณต์ฌํจ์ ํธ์ถ ์ ์ธ์ ํ์ฅ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋, ์์ ๋ณต์ฌ(Shallow Copy)๊ฐ ์ด๋ฃจ์ด์ง๋ค.ES6(ECMAScript 2015)๋ถํฐ ์ฌ์ฉํ ์ ์๋ค. ์์ ๋ณต์ฌ๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ต์์ ์์ค๋ง ๋ณต์ฌํ๋ค. (์ค์ฒฉ๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์๋ณธ ๋ฐ์ดํฐ์ ๋ํ '์ฐธ์กฐ'๋ฅผ ์ ์งํ๋ค.) ๋ฐ๋ผ์ ์ ๊ฐ ์ฐ์ฐ์๋ฅผ..
2024.08.27 -
- [React.js] ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง (JSX, React.createElement)
์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง (JSX, React.createElement)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง๋ฅผ ์ ๋ฆฌํด๋ณธ๋ค. ์ปดํฌ๋ํธ ์์ฑ ๋ฐฉ๋ฒโ ํจ์ํ ์ปดํฌ๋ํธfunction Greeting() { return ( hello world );} ํจ์ํ ์ปดํฌ๋ํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๋ก ์ ์๋๋ฉฐ, JSX(JavaScript XML) ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ UI๋ฅผ ๋ฐํํ๋ค.@@์ @@ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ์ ์ํ๋ค.JSX๋ Babel ๊ฐ์ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด @React.createElement@ ํธ์ถ๋ก ๋ณํ๋๋ค.์ฝ๋๊ฐ ๋ ์ง๊ด์ ์ด๊ณ ์ฝ๊ธฐ ์ฌ์ฐ๋ฉฐ, ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ๋ HTML๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. โก @React.createElement@imp..
2024.08.26 -
- [React.js] ๋ฆฌ์กํธ ์ค๋ํซ(Snippet) ์ ๋ฆฌ
๋ฆฌ์กํธ ์ค๋ํซ(Snippet) ์ ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋(VS Code)์ ๋ฆฌ์กํธ(React.js) ์ค๋ํซ ํ์ฅ(ES7+ React/Redux/React-Native snippets)์ ์ค์นํ ํ ์ฌ์ฉํ ์ ์๋ ์ค๋ํซ๋ค์ ์ ๋ฆฌํด๋ณธ๋ค. ์ค๋ํซ(Snippet)ํ๋ก๊ทธ๋๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋ ์กฐ๊ฐ์ด๋ ํ ํ๋ฆฟ์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํด์ผ ํ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ VS Code ํ์ฅ ์ค์น๋ฆฌ์กํธ ์ค๋ํซ์ VS Code์์ ์ฌ์ฉํ๋ ค๋ฉด, ์๋์ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํด์ค์ผ ํ๋ค.ES7+ React/Redux/React-Native snippets ES7+ React/Redux/React-Native snippets - Visual Studio MarketplaceExten..
2024.08.26 -
- [React.js] Create React App๊ณผ Vite
Create React App๊ณผ Vite๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js) ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ฒ ์ค์ ํ๊ณ ๊ฐ๋ฐํ ์ ์๊ฒ ํด์ฃผ๋ ํด์ธ Create React App๊ณผ Vite์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.Create React App(CRA)๊ฐ๋ ํ์ด์ค๋ถ(๋ฉํ)์์ ๊ฐ๋ฐํ ๋ฆฌ์กํธ ๊ณต์ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ๋๊ตฌ๋ฆฌ์กํธ๋ก ์ ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ํ์ํ ๋ชจ๋ ์ค์ ์ ์๋์ผ๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ ์ฝ๋ ์์ฑ์ ์ง์คํ ์ ์๋ค. ํน์งZero Configuration๋ณต์กํ ์ค์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.ํ๋ก์ ํธ ์ค์ , ๋น๋ ๋๊ตฌ(์นํฉ ๋ฑ), Babel ์ค์ ๋ฑ์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ์ฌ, ๊ฐ๋ฐ์๊ฐ ์ง์ ์ค์ ํ ํ์๊ฐ ์๋ค.Out-of-the-box๊ธฐ๋ณธ์ ์ธ ๋ฆฌ์กํธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ถ๊ณ ์๋ค.ESLint, Jest, Service Work..
2024.08.26 -
- [JavaScript] for ๋ฌธ ์ ๋ฆฌ (for, for...in, for...of, forEach, for await...of)
for ๋ฌธ ์ ๋ฆฌ (for, for...in, for...of, forEach, for await...of)๋ค์ด๊ฐ๋ฉฐ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript)์์ ์ฌ์ฉํ ์ ์๋ for ๋ฌธ(@for@, @for...in@, @for...of@, @forEach@, @for await...of@)์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ์ข ๋ฅโ @for@ ๋ฌธํน์ ํ์๋งํผ ๋ฐ๋ณตํ ๋ ์ฌ์ฉํ๋ค.for (initialization; condition; increment) { // ๋ฐ๋ณตํ ์ฝ๋} ์์ ์ฝ๋for (let i = 0; i โก @for...in@ ๋ฌธ๊ฐ์ฒด์ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ์ ๋ฐ๋ณตํ ๋ ์ฌ์ฉํ๋ค.๋ฐฐ์ด(Array)์์๋ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋ณตํ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด(Object)์ ์ฌ์ฉ๋๋ค.for (const key in ob..
2024.08.25 -
- [React.js] ํจ์ํ ์ ๋ฐ์ดํธ์ ์ง์ ์ฐธ์กฐ ์ ๋ฐ์ดํธ
ํจ์ํ ์ ๋ฐ์ดํธ์ ์ง์ ์ฐธ์กฐ ์ ๋ฐ์ดํธ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ํ(Status)๋ฅผ ์ ๋ฐ์ดํธํ ๋, ํจ์ํ ์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ๊ณผ ์ง์ ์ฐธ์กฐ ์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ํจ์ํ ์ ๋ฐ์ดํธ(Functional Update)setPosts((prevPosts) => [postData, ...prevPosts])์ํ ์ ๋ฐ์ดํธ๊ฐ ์ด์ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.ํจ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์๋ค.์ฅ์ ์ค๋ช ์์ ์ฑ- ๋ฆฌ์กํธ์ ์ํ ์ ๋ฐ์ดํธ๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ ์ํ ์ ๋ฐ์ดํธ๊ฐ ๋์์ ๋ฐ์ํ ์ ์๋ค.- ์ด๋, ํจ์ํ ์ ๋ฐ์ดํธ ํํ๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ ์ํ ๊ฐ์ ๋ณด์ฅํ ์ ์๋ค.- @prevPosts@๋ ํญ์ ํ์ฌ ์ํ์ ์ต์ ์ค๋ ์ท์ ์ ๊ณตํ๋ค.๋์์ฑ ์ฒ๋ฆฌ- ์ํ ์ ๋ฐ์ด..
2024.08.22 -
- [React.js] ์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ฐฉ๋ฒ ์ ๋ฆฌ
์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ฐฉ๋ฒ ์ ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์์ ์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ์กฐ๊ฑด๋ถ ๋ ๋๋ง(Conditional Rendering)๊ฐ๋ ํน์ ํ ์กฐ๊ฑด์ ๋ฐ๋ผ UI์ ์ผ๋ถ๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ์จ๊ธฐ๋ ๋ฐฉ๋ฒ ๋ฐฉ๋ฒโ ์กฐ๊ฑด๋ถ ์ฐ์ฐ์ / ์ผํญ ์ฐ์ฐ์(? :)์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ ํน์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๊ณ , ๊ฑฐ์ง์ผ ๋๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๊ฑฐ๋ ์๋ฌด ๊ฒ๋ ๋ ๋๋งํ์ง ์๊ฒ ํ ์ ์๋ค.function Example({ isVisible }) { return ( {isVisible ? ์ด ๋ด์ฉ์ ๋ณด์ ๋๋ค! : ์ด ๋ด์ฉ์ ๋ณด์ด์ง ์์ต๋๋ค!} );} โก ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&)๋ ผ๋ฆฌ @&&@ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ง ๋ ๋๋งํ๋๋ก ํ ์ ์๋ค.์กฐ๊ฑด..
2024.08.22