Hoonni
ํ›„๋‹ˆ's Blog

์ „์ฒด ๊ธ€

Hi There ! ๐Ÿ–๏ธ I am FrontEnd Developer ๐Ÿ’ป I'm studying AI, Backend, React-Native Now.
React/2022-ไธŠ

React Currying

React Currying Currying(์ปค๋ง) ๊ธฐ๋ฒ•์€ ์ธ์ž๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ธ ํ•จ์ˆ˜์˜ ์ผ๋ถ€ ์ธ์ž๋ฅผ ๊ณ ์ •์‹œํ‚ค๋Š” ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฒ• ์ธ์ž๊ฐ€ n๊ฐœ์ธ ํ•จ์ˆ˜๋ฅผ n๊ฐœ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ๋” ๋งŒ๋“œ๋Š” ๊ธฐ๋ฒ• โ”” word์™€ name์ด๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ํ•จ์ˆ˜ โ”Œ ์œ„์˜ ํ•จ์ˆ˜์— ์ปค๋ง์„ ์ ์šฉํ•จ โ”œ n(2)๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›๋˜ ํ•จ์ˆ˜๊ฐ€ n(2)๊ฐœ๋กœ ์ชผ๊ฐœ์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ โ”œ ๋˜ํ•œ, ์ฒซ ๋ฒˆ์งธ๋กœ ๋ฐ›๋˜ ์ธ์ž์ธ word๋ฅผ hello๋ผ๋Š” ๊ฐ’์œผ๋กœ ๊ณ ์ •ํ•˜๊ณ  name๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๋˜ํ•œ ๋ณผ ์ˆ˜ ์žˆ์Œ โ”œ ์ฆ‰, ์ปค๋ง ๊ธฐ๋ฒ•์€ ์ผ๋ถ€ ์ธ์ž์— ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ โ”” ๊ทธ ๋ฐ˜๋ณต๋˜๋Š” ์ธ์ž๋ฅผ ๊ณ ์ •ํ•จ์œผ๋กœ์จ ์ค‘๋ณต์„ ์ตœ์†Œํ™” ํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๊ธฐ๋ฒ• โ”” ์œ„๋Š” ์ธ์ž๊ฐ€ 4๊ฐœ๋‚˜ ๋˜๋Š” ํ•จ์ˆ˜ โ”Œ ์œ„ ํ•จ์ˆ˜์— ์ปค๋ง์„ ์ ์šฉํ•จ โ”” ์ปค..

React/2022-ไธŠ

React HOC vs HOF

HOC vs HOF HOC (Higher Order Component) ํŠน์ • ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋จผ์ € ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹ JavaScript์˜ ํด๋กœ์ € ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•จ HOC์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ ์•ž์— HOC๋งŒ ๋ถ™์—ฌ์ฃผ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ถŒํ•œ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•จ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” ๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ์ด๋ฏ€๋กœ ์ด๋ฆ„ ์•ž์— with๋ฅผ ๋ถ™์—ฌ์คŒ ex) withAuth, withApollo HOC ์žฅ์  event.target.id๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๋žตํ•ด์ง material-ui, ant-desing ๋“ฑ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด id ๊ฐ’์ด ๋‚ ๋ผ๊ฐ€๋Š” ํ˜„์ƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ id๋Š” ์ „์ฒด ํƒœ๊ทธ์—์„œ ๊ณ ์œ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, id๊ฐ€ ๋‚จ์šฉ๋˜๋ฉด ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์—์„œ ๋ฌธ์ œ๊ฐ€ ์•ผ๊ธฐ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ ..

React/2022-ไธŠ

JS Closure

JS Closure ๋‚ด๋ถ€ ํ•จ์ˆ˜์—์„œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ์ง€์—ญ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ ์ „์—ญ๋ณ€์ˆ˜ ํ•ด๋‹น ํŽ˜์ด์ง€ ์•ˆ์ด๋ผ๋ฉด ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ง€์—ญ๋ณ€์ˆ˜ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ •์˜๋œ ๋ณ€์ˆ˜๋กœ์จ, ํ•ด๋‹น ํ•จ์ˆ˜ ์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ JS Closure ์˜ˆ์‹œ โ”Œ ์Šค์ฝ”ํ”„ ์ฒด์ธ์— ์˜ํ•ด Func02() ํ•จ์ˆ˜ ์•ˆ์˜ apple์€ ํ•จ์ˆ˜ ๋ฐ”๊นฅ์— ์žˆ๋Š” apple์„ ์˜๋ฏธํ•จ โ”” ๋”ฐ๋ผ์„œ, ๊ฒฐ๊ณผ๋กœ "์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜" ๊ฐ€ ๋‚˜์˜ด โ”Œ ๋งˆ์ง€๋ง‰ ์ค„์˜ Func01("์‚ฌ๊ณผ")๋Š” ๊ฐ€์žฅ ์œ—์ค„์— ์žˆ๋Š” apple์— "์‚ฌ๊ณผ"๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ณ , โ”œ ๋งˆ์ง€๋ง‰ ์ค„์˜ Func01(" ")("๋ฐ”๋‚˜๋‚˜")์˜ "๋ฐ”๋‚˜๋‚˜"๋Š” Func02()์˜ banana์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ โ”” ๊ฒฐ๊ณผ๋กœ "์•ˆ๋…• ?", "์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜" ๊ฐ€ ๋‚˜์˜ด

React/2022-ไธŠ

๊ถŒํ•œ ๋ถ„๊ธฐ

๊ถŒํ•œ๋ถ„๊ธฐ ์‚ฌ์šฉ์ž ์„œ๋ฒ„ ์•ˆ์—์„œ ๋กœ๊ทธ์ธํ•œ ์œ ์ € / ๋กœ๊ทธ์ธ ์•ˆํ•œ ์œ ์ €๋กœ ๊ถŒํ•œ์„ ๊ตฌ๋ถ„ ๊ถŒํ•œ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ useEffect์—์„œ accessToken์ด ์—†์œผ๋ฉด "/login" ํ™”๋ฉด์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ด๋™์‹œํ‚ด โ”” ๊ถŒํ•œ๋ถ„๊ธฐ๋ฅผ ํ•˜๋ ค๋ฉด ๋กœ๊ทธ์ธ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋Š” ํŽ˜์ด์ง€์— ๋ชจ๋‘ ์œ„์˜ ๋กœ์ง์„ ์ž…๋ ฅํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Œ โ”” ๋”ฐ๋ผ์„œ, ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ HOC๋ฅผ ์‚ฌ์šฉํ•จ !!

React/2022-ไธŠ

Cookie, Session, Local Storage

Cookie, Session, Local Storage Local Storage window.localStorage์— ์œ„์น˜ํ•˜๊ณ  ์žˆ์Œ string, boolean, number, null, undefined ๋ชจ๋‘ ์ €์žฅ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋จ object ์ƒ์„ฑ์ž ํ˜•์œผ๋กœ ์ €์žฅ๋˜์–ด ํ•œ๋ฒˆ์— ํ†ต์งธ๋กœ ์ €์žฅํ•˜๋ ค๋ฉด JSON.stringify() ํ•ด์•ผํ•˜๊ณ , ๋ฐ›์„ ๋•Œ๋Š” JSON.parse() ํ•ด์•ผ ํ•จ ์ตœ๋Œ€ 5MB์˜ ์ •๋ณด๋ฅผ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ง€์šฐ๊ธฐ ์ „๊นŒ์ง€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋˜์–ด์žˆ์Œ โ”” ์ž๋™ ๋กœ๊ทธ์ธ ์ €์žฅ Session Storage window.sessionStorage์— ์œ„์น˜ํ•˜๊ณ  ์žˆ์Œ HTTP session id๋ฅผ ์‹๋ณ„์ž๋กœ ๊ตฌ๋ณ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ฟ ํ‚คํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ์ ‘์†ํ•œ ์„œ๋ฒ„ DB์— ์ •๋ณด๋ฅผ ์ €์žฅํ•จ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ..

React/2022-ไธŠ

Regular Expression (์ •๊ทœํ‘œํ˜„์‹)

Regular Expression (์ •๊ทœํ‘œํ˜„์‹) ์ •๊ทœ ํ‘œํ˜„์‹์€ "ํŠน์ • ํŒจํ„ด์˜ ๋ฌธ์ž์—ด"์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํ‘œํ˜„ ๋ฐฉ์‹ (ํ˜•์‹ ์–ธ์–ด, formal language๋ผ๊ณ  ํ•จ) ์ •๊ทœ ํ‘œํ˜„์‹์„ ์ด์šฉํ•˜๋ฉด, ํŠน์ • ํŒจํ„ด์— ๋งค์นญ๋˜๋Š” ๋ฌธ์ž์—ด์„ ์‰ฝ๊ฒŒ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ์Œ ์ •๊ทœํ‘œํ˜„์‹ ์‚ฌ์šฉ๋ฒ• ์ •๊ทœํ‘œํ˜„์‹ ํ˜•์‹ /ํŒจํ„ด/ํ”Œ๋ž˜๊ทธ โ”Œ ์Šฌ๋ž˜์‹œ(/) "์‚ฌ์ด"์—๋Š” ๋งค์นญ์‹œํ‚ฌ "ํŒจํ„ด"์„ ์จ์คŒ โ”” ์Šฌ๋ž˜์‹œ(/) "๋‹ค์Œ"์—๋Š” ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” "ํ”Œ๋ž˜๊ทธ"๋ฅผ ์จ์คŒ โ”” ํ”Œ๋ž˜๊ทธ๋Š” ํ•˜๋‚˜๋งŒ ์ฐพ์„์ง€, ๋ชจ๋‘ ๋‹ค ์ฐพ์„์ง€ ๋“ฑ์„ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜ ์ •๊ทœํ‘œํ˜„์‹ ๋งค์นญ ํŒจํ„ด(๋ฌธ์ž, ์ˆซ์ž, ๊ธฐํ˜ธ ๋“ฑ) ์•„๋ž˜ ๋งค์นญ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด, ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋ฌธ์ž/์ˆซ์ž/๊ธฐํ˜ธ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ ํŒจํ„ด ์˜๋ฏธ a-zA-Z ์˜์–ด์•ŒํŒŒ๋ฒณ(-์œผ๋กœ ๋ฒ”์œ„ ์ง€์ •) ใ„ฑ-ใ…Ž๊ฐ€-ํžฃ ํ•œ๊ธ€ ๋ฌธ์ž(-์œผ๋กœ ๋ฒ”์œ„ ์ง€์ •) 0-9 ์ˆซ์ž(-์œผ๋กœ ๋ฒ”์œ„ ์ง€์ •..

React/2022-ไธŠ

React ์ƒํƒœ๊ด€๋ฆฌ - Context api, redux, mobx, swr

Context api, Redux, Mobx, Swr React์—์„œ๋Š” ์ „์—ญ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์ƒ๋‹นํžˆ ์กด์žฌํ•จ ์ œ์ผ ์œ ๋ช…ํ•œ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋Š” redux๊ฐ€ ์žˆ์ง€๋งŒ, redux๋ฅผ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์กด์žฌํ•จ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์†Œ๊ฐœํ•˜๊ธฐ ์ „ ์ „์—ญ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ถ€ํ„ฐ ์•Œ์•„์•ผ ํ•จ ! Global State Global State์— ๋Œ€ํ•œ ์ •์˜ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃจ์–ด์•ผํ•  ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ด ์žˆ๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š”์ง€ ๊ธฐํš์„ ์ƒ๊ฐํ•˜๊ณ  ํŒŒ์•…ํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Œ ์ƒํƒœ๋ฅผ ๋‚˜๋ˆŒ ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด - ๊ตณ์ด ์ƒํƒœ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€ ? Global State ๊ด€๋ฆฌ๋ž€ ? ์ „์—ญ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ „๋‹ฌ/์กฐ์ž‘ ํ•  ์ˆ˜ ์žˆ์Œ Context..

React/2022-ไธŠ

Throttling & Debouncing

Throttling & Debouncing Throttling ์“ฐ๋กœํ‹€๋ง(Throttling)์€ ํ•จ์ˆ˜๊ฐ€ ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์ตœ๋Œ€ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋˜๋„๋ก ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ• ์“ฐ๋กœํ‹€๋ง์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜๋ฅผ ์กฐ์ ˆํ•จ Ex) 10์ดˆ๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ์ตœ๋Œ€ ํ•œ ๋ฒˆ ํ˜ธ์ถœ Debounce ๋””๋ฐ”์šด์‹ฑ(Debouncing)์€ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ์ž์ฃผ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ• ๋””๋ฐ”์šด์‹ฑ์€ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ผ์ • ์‹œ๊ฐ„์„ ๋Œ€๊ธฐํ•˜๋„๋ก ํ•จ ์ฆ‰, ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์†๋„๋ฅผ ์ œํ•œํ•จ ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋˜๋ฉด, ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๋งŒ ์‹คํ–‰๋˜๊ณ  ์ด์ „์˜ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๋Š” ๋ฌด์‹œ๋จ Ex) ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ 10์ดˆ ๋™์•ˆ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, 10์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„ ์ œ์ผ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๋งŒ ์‹คํ–‰