profile
Here and Now. ๐Ÿง—โ€โ™‚๏ธ
ํƒœ๊ทธ ๋ชฉ๋ก
์ „์ฒด๋ณด๊ธฐ (45)React(12)JavaScript(5)Firebase(3)CSS(3)js(3)todo(2)JSON Server(2)grid(2)Fetch(2)router(2)GET(2)POST(2)JSDoc(1)function(1)Event(1)์ •๊ทœํ‘œํ˜„์‹(1)scss(1)๋ฐฐ์—ด(1)mui(1)Root(1)semantic tag(1)badge(1)Internalization(1)promise(1)API(1)npm(1)slide(1)ํƒ€์ž๊ธฐํšจ๊ณผ(1)์„œ์šธ์‹œ ๊ณต๊ณต API(1)http(1)๋ฆฌ์•กํŠธ(1)coords(1)vueํ”„๋กœ์ ํŠธ๊ตฌ์กฐ(1)๋ฐ˜์‘ํ˜•(1)responsive(1)realtime(1)yarn(1)FE interview(1)XMLHTTPRequest(1)Regularexpression(1)Accordion(1)์˜๋ฏธ์žˆ๋Š” ํƒœ๊ทธ(1)์Šคํฌ๋ฆฐ๋ฆฌ๋”(1)๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ(1)CSS์ ์šฉ์ˆœ์œ„(1)await(1)useEffect(1)useState(1)img(1)Fetch API(1)redux-toolkit-thunk(1)async(1)vuecli(1)Intl(1)method(1)layout(1)slideNavigation(1)์˜ค๋ฅ˜ํ•ด๊ฒฐ(1)mailing(1)vuejs(1)json(1)redux-toolkit(1)64bit(1)thunk(1)calc()(1)put(1)delete(1)context(1)RealtimeDB(1)State(1)useMemo(1)useReducer(1)useRef(1)this(1)CSS์ ์šฉ๋ฐฉ๋ฒ•(1)๋ถ€๋™์†Œ์ˆ˜์ (1)์นด์นด์˜ค ์ง€๋„ API(1)Sass(1)html(1)useCallback(1)ํ˜‘์—…(1)typewriter-effect(1)๊ธฐ๋ณธ๊ตฌ์กฐ์„ค๊ณ„(1)Markdown(1)array(1)v5(1)react typescript(1)v6(1)vue์‹คํ–‰๊ตฌ์กฐ(1)๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™”(1)seo(1)InternalizationAPI(1)vanillajs(1)Map(1)CRUD(1)redux(1)CallbackHell(1)area(1)react router(1)vscode(1)authentication(1)git(1)typescript(1)์ฃผ์„(1)Comment(1)Auth(1)
post-thumbnail

Firebase Authentication (with React)

Intro Firebase Auth๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € Firebase ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , React ํ”„๋กœ์ ํŠธ์—์„œ Firebase DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Firebase 1. Firebase ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ![](https://velog.velcdn.com/im

2023๋…„ 1์›” 12์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Firebase Realtime Database CRUD ์ด๊ฑฐ ๋ณด๋ฉด ํ•ด๊ฒฐ! (with React)

Intro Firebase Realtime DB๋ฅผ ํ†ตํ•ด์„œ CRUDํ•˜๋Š” ์ž‘์—…์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—๋Š” ์–ด๋ ค์›Œ์„œ ์‹œ๋„ ์กฐ์ฐจ ๋ชปํ• ๊ฑฐ๋ผ๋Š” ๋‘๋ ค์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ๋งŒ ์ž˜ ๋”ฐ๋ผ๊ฐ€๋ฉด Firebase Realtime DB๋กœ CRUD ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ฐœํ•ด๋ณผ๊นŒ์š”?๐Ÿ˜€ ๋ณธ๋ฌธ 1. Firebase ์„ธํŒ… ๊ตฌ๊ธ€๋กœ Firebase๋ฅผ ๊ฒ€์ƒ‰ Firebase Console ํด๋ฆญ ๋กœ๊ทธ์ธ ํ›„ ํ”„๋กœ์ ํŠธ ์ถ”๊ฐ€ ํ”„๋กœ์ ํŠธ ์ œ๋ชฉ ์ž…๋ ฅ ![](https://v

2023๋…„ 1์›” 10์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] React MUI ๋„ˆ๋ฌด ์‰ฌ์›Œ์„œ ๋ˆˆ๋ฌผ์ด ๋‚ฉ๋‹ˆ๋‹ค๐Ÿ˜ญ

Intro ์šฐ์„  ์–ด๊ทธ๋กœ ๋Œ์–ด์„œ ์ฃ„์†ก(์•ˆ)ํ•ฉ๋‹ˆ๋‹ค. ์˜ค์‹ ๊น€์— React MUI ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜ ๋ณด๊ณ  ๊ฐ€์‹œ์ฃ . ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ ๋ช‡ ๊ฐ€์ง€ ์ค‘์— ํ…Œ์ด๋ธ”๋งŒ ํ™•์ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๊ณต์‹ ๋ฌธ์„œ์— ์žˆ๋Š” ๊ฑธ ๊ทธ๋Œ€๋กœ ๋ณต๋ถ™ํ•ด์„œ ์ดํ•ดํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค ์ฝ๋Š”๋ฐ ์ •ํ™•ํžˆ 5๋ถ„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ‘์‹œ๋‹ค. Data Table ์‹ค์Šตํ•ด๋ณผ ํ…Œ์ด๋ธ” ํ™•์ธ 1. mui ๊ธฐ๋ณธ ๋ชจ๋“ˆ ์„ค์น˜ 2. @mui/x-data-grid ์—†๋‹ค๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด? ๋ชจ๋“ˆ ์„ค์น˜ ํ•˜๊ธฐ 3. ์ฝ”๋“œ ํ™•์ธ ํฌ๊ฒŒ 4ํŒŒํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1๋ฒˆ DadaGrid ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ @mui/x

2022๋…„ 12์›” 26์ผ
ยท
2๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Redux-toolkit thunk๋กœ ๋น„๋™๊ธฐ ์ƒํƒœ ์ฒ˜๋ฆฌํ•˜๊ธฐ

Intro redux-toolkit์„ ์ด์šฉํ•ด์„œ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” createAsyncThunkํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ณ  ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ก  ๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ๐Ÿ“„ src / counterSlice.js line1: slice๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ createSlice๋ฅผ, ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ createAsyncThunk๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. createAsyncThunk์€ ๋น„๋™๊ธฐ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” action creator๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. action creator๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. action creator.p

2022๋…„ 12์›” 22์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] react-redux & redux-toolkit

๐ŸŒฑ Intro ์ด๋ฒˆ ์žฅ์—์„œ๋Š” react์—์„œ react-redux๊ณผ redux-toolkit์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์•™์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ์›ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ์›๋ณธ ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ง€์—ญ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐ๋ฅผ props๋กœ ๊ณ„์† ์ „๋‹ฌํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ(props drilling)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด redux ์ž…๋‹ˆ๋‹ค. ๐ŸŒฑ ๋ณธ๋ก  1. react-redux ๐Ÿ”ต1-1. ํด๋” ๊ตฌ์กฐ ๐Ÿ”ต1-2. ๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ redux, react-redux ์„ค์น˜ํ•˜๊ธฐ ๐Ÿ“„ src / store /

2022๋…„ 12์›” 21์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] Firebase (with React)

๐ŸŒฑ Intro ์ด๋ฒˆ ์žฅ์—์„œ๋Š” Firebase์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Firebase๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋“ฑ๋กํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  React์—์„œ DB๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐ŸŒฑ Firebase 1-1. Firebase๋ž€? ๊ตฌ๊ธ€์˜ ๋ชจ๋ฐ”์ผ ๋ฐ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ(Authentication), ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Firestore), ๋ถ„์„(Analytics)๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 1-2. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ ![](https://velog.velcdn.com/images/harimad/post/4413aa16-8f

2022๋…„ 12์›” 11์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] React Router

Intro ์ด๋ฒˆ ์žฅ์—์„œ ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ผ์šฐํŒ…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด์„œ ์ดํ•ดํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ก  1. ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ 1-1. ์ผ๋ฐ˜ ์›น ์‚ฌ์ดํŠธ์˜ ๋™์ž‘ ๊ณผ์ • 1-2. ์›น ์‚ฌ์ดํŠธ์˜ ํ™”๋ฉด ์ผ๋ถ€๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•œ ๊ณผ์ • ์ดˆ๊ธฐ ์›น ์‚ฌ์ดํŠธ ๊ฐ ํ™”๋ฉด์— ํ•ด๋‹นํ•˜๋Š” ์›น ๋ฌธ์„œ๋ฅผ ์ผ์ผ์ด ์ œ์ž‘ ์„œ๋ฒ„์— ์ €์žฅ๋œ ๊ฐ’์„ ํ™”๋ฉด์— ๋ฐ˜์˜ํ•˜๋Š” ๋™์ ์ธ ์›น ๋ฌธ์„œ ๋„๊ตฌ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(Server Side Rendering) ASP(Active Server Page), JSP(Java Server Page) ์›น ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์›น ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑ ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(Singl

2022๋…„ 12์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] [React] Context ์•Œ์•„๋ณด๊ธฐ

๐ŸŒฑ Intro ๋ฆฌ์•กํŠธ์—์„œ Context๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒํƒœ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Context๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ค‘์ฒฉ๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ์ƒํƒœ ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ธฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด์„œ Context ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐ŸŒฑ 1. Context 1-1. Context๋ž€? ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ „๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฐ’์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ) ์‚ฌ์šฉ์ž์˜ ์–ธ์–ด, ๋กœ๊ทธ์ธ ์ƒํƒœ, UI ํ…Œ๋งˆ ๋“ฑ ํ™˜๊ฒฝ ์„ค์ • ์ฃผ์˜ ์‚ฌํ•ญ Context์™€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—ฐ๋™๋˜๋ฉด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์ƒํƒœ์ธ ๊ฒฝ์šฐ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. โ— Context ๋‚ด๋ถ€์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด Context๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ฆฌ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค. 1-2. ์ผ๋ฐ˜์ ์ธ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ํ๋ฆ„ ์ปดํฌ๋„ŒํŠธ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ฃผ๋กœ ์ตœ์ƒ์œ„ ์ปดํฌ

2022๋…„ 12์›” 7์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] [React] Hooks ์•Œ์•„๋ณด๊ธฐ(useReducer, useMemo, useCallback)

๐ŸŒฑ Intro ์ด๋ฒˆ ์žฅ์—์„œ๋Š” React ์˜ ๋Œ€ํ‘œ์ ์ธ Hook์ธ useReducer, useMemo, useCallback์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด Hook ๋“ค์€ ๋ฆฌ์•กํŠธ์—์„œ ์ตœ์ ํ™”๋ฅผ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋“ค ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์„œ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. useMemo๋Š” ๋ณ€์ˆ˜ ๋ฉ”๋ชจ, useCallback์€ ํ•จ์ˆ˜ ๋ฉ”๋ชจ, React.memo๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฉ”๋ชจํ•ฉ๋‹ˆ๋‹ค. ๐ŸŒฑ 1. useReducer 1-1. ํŠน์ง• useReducer()๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” Hooks ์ž…๋‹ˆ๋‹ค. ํŠน์ง• ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋กœ์ง์„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถ„๋ฆฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ํ•ด๋‹น ๋กœ์ง์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ![](https://velog.velcdn.com/images/harimad/post/ac1d3e67-00c0-477d-b206-d104f5af8e5b/image.

2022๋…„ 12์›” 6์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] [React] state & event ๊ธฐ์ดˆ ์‹ค์Šตํ•˜๊ธฐ

๐ŸŒฑIntro ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” React์—์„œ state์™€ event๋ฅผ ์‹ค์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. React์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•  ๋•Œ useState๋ฅผ ์ด์šฉํ•ด์„œ ์ €์žฅํ•˜๊ณ , state๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ state๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ’(props)์„ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ๋„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. onClick, onChange์™€ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ React์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์‹ค์Šต์„ ํ†ตํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐ŸŒฑ๋ณธ๋ก  ๋ฌธ์ œ 1 ๋ฌธ์ œ 1 - ํ’€์ด ์ฝ”๋“œ ๋ฒ„ํŠผ ํด๋ฆญ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ state๊ฐ’ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ํด๋ฆญ์ด๋ผ๋Š” ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ state๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” countUp ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. se

2022๋…„ 11์›” 30์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] React Router v5 -> v6 ๋น ๋ฅธ ์ •๋ฆฌ

0. ๋“ค์–ด๊ฐ€๋ฉฐ ์ด๋ฒˆ ์žฅ์—์„œ๋Š” 'React Router v6 ํŠœํ† ๋ฆฌ์–ผ'์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ 5๋ฒ„์ „์—์„œ 6๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์„ ์ด๋ฏธ์ง€๋กœ ์ดํ•ดํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ฒŸ์Šต๋‹ˆ๋‹ค. ํด๋” ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜๊ณ , ๊ฐ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ๋ผ์šฐํŒ…์ด๋ž€? >๋ผ์šฐํŒ…์ด๋ž€ ์ถœ๋ฐœ์ง€์—์„œ ๋ชฉ์ ์ง€๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ผ์šฐํŒ…์€ ์‚ฌ์šฉ์ž๊ฐ€ ํƒœ์Šคํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ํ™”๋ฉด(view)์—์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ํ™”๋ฉด์„ ์ „ํ™˜ํ•˜๋Š” ๋‚ด๋น„๊ฒŒ์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ผ์šฐํŒ…์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL ๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ์ „ํ™˜ํ•˜๋Š” ์œ„ํ•œ ์ผ๋ จ์˜ ํ–‰์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. - poiemaweb

2022๋…„ 11์›” 20์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

[SeSAC Front-end] React๋กœ ๊ฐ„๋‹จํ•œ ํ• ์ผ ์•ฑ ๋งŒ๋“ค๊ธฐ๐Ÿ˜Ž

0. Intro ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ๋ฅผ ์ตํžˆ๊ณ  ๋‚˜์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“ค์–ด๋ณด๋Š” ๊ฐ„๋‹จํ•œ todo ์•ฑ์„ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. todo ์•ฑ์„ ๋งŒ๋“œ๋Š”๋ฐ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์„œ html ํƒœ๊ทธ๋“ค์„ ๊ทธ๋ ค์ฃผ๋Š” ์ž‘์—…์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ตœ์ ํ™”๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์˜ค๋กœ์ง€ todo ์•ฑ์ด ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€์— ์ดˆ์ ์„ ๋งž์ถ”์–ด์„œ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์žฅ์„ ๋งˆ์น˜๋ฉด, ์šฐ๋ฆฌ๋Š” ๋ฆฌ์•กํŠธ์˜ ๊ธฐ์ดˆ๋ฅผ ์ดํ•ดํ•˜๋ฉด์„œ ๊ฐ„๋‹จํ•œ todo์•ฑ์„ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ํ”„๋กœ์ ํŠธ ์„ธํŒ… ๋จผ์ € NodeJs๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. Node๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ์šฐ๋ฆฌ๊ฐ€ ๋ฆฌ์•กํŠธ ์•ฑ์„ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Node๋ฅผ ์„ค์น˜ํ•˜๋ฉด npm๊ณผ npx๊ฐ€ ๋™์‹œ์— ์„ค์น˜ ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋Š” npx ๋ฅผ ์ด์šฉํ•ด์„œ create-react-app ๋ชจ๋“ˆ์„ ์‹คํ–‰ํ•˜๊ณ  todoApp์ด๋ผ๋Š” ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ฒ ๋‹ค๋Š” ๋ช…๋ น

2022๋…„ 11์›” 6์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท