์ „์ฒด ๊ธ€

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Frontend Developer
๋ฌธ์ œ) Given a multi-dimensional array arr and a depth n, return a flattened version of that array. A multi-dimensional array is a recursive data structure that contains integers or other multi-dimensional arrays. A flattened array is a version of that array with some or all of the sub-arrays removed and replaced with the actual elements in that sub-array. This flattening operation should only be d..
๋ฌธ์ œ์ƒํ™ฉ NextJS๋กœ ๋นŒ๋“œํ•œ ์ดํ›„์— ๋ธŒ๋ผ์šฐ์ €์—์„œ reload๋ฅผ ํ•˜๋ฉด ํŽ˜์ด์ง€ ๊ฒฝ๋กœ๋ฅผ ์ œ๋Œ€๋กœ ์ฐพ์ง€ ๋ชป ํ•˜๊ณ  ์ดˆ๊ธฐํ™”๋ฉด์œผ๋กœ ๋ณด๋‚ด๋ฒ„๋ฆฌ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์ตœ์ข… ์„œ๋น„์Šค๋ฅผ ์•ž๋‘๊ณ  ์ด ๋ฌธ์ œ๋กœ ๊ฝค๋‚˜ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์ฉ๊ณ  ์žˆ์—ˆ๋‹ค. ์›์ธ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญํ•œ ์ฃผ์†Œ์™€ ์‹ค์ œ ๋ฆฌ์†Œ์Šค์˜ ์ฃผ์†Œ(URL)์ด ๋‹ฌ๋ผ์„œ ์ƒ๊ธด ์ผ์ธ๋ฐ, ์ด๊ฒŒ ๋กœ์ปฌ์—์„œ๋Š” ์ž˜ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์— ์ •๋ง ๋ฌด์Šจ ์ผ์ธ์ง€ ์•Œ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. static์„ S3์— ์˜ฌ๋ฆฌ๋ฉด์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋กœ nextjs๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์šฐํŒ…์„ ํ•˜๋Š”๋ฐ, ์ด๊ฑธ static์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด๋Œ€๋กœ ๋ฐฐํฌํ•˜๋ฉด ๊ธฐ๋ณธ url ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋’ค์— ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋ถ™๋Š” ๊ฒฝ์šฐ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ํ•ด๊ฒฐ 1. next.config์— trailingSlash ์˜ต์…˜ ๋„ฃ์–ด์ฃผ๊ธฐ // next.config.js module.exp..
๐Ÿ“ What I learned ์–ด๋А ๊ฒƒ ํ•˜๋‚˜์— ์ง‘์ค‘ํ•˜์ง€ ๋ชป ํ•˜๊ณ  ์ด๋ฃฌ๊ฒƒ ์—†๋Š” ํ•œ๋‹ฌ์„ ๋ณด๋‚ธ ๊ฒƒ ๊ฐ™๋‹ค. ํœด๊ฐ€์ฒ ์ด๋ผ์„œ ๋งˆ์Œ์ด ๋ถ•~๋œฌ๋‹ค๋Š” ํ•‘๊ณ„๋ฅผ ๋Œ€๋ฉด ๊ดœ์ฐฎ์„๊นŒ? ๋Šฅ๋ ฅํ’€์„ ๋„“ํžˆ๊ณ  ์‹ถ๋‹ค๋Š” ์š•์‹ฌ์— '์˜์–ด'์— ์š•์‹ฌ์„ ๋ƒˆ๊ณ , ๊ทธ ์ƒ๊ฐ๊ณผ ์ด์–ด์ง€๋Š” ํฌ์ธํŠธ๋กœ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๊ฒธํ•  '์˜์–ด'๋งŒ ์‚ฌ์šฉํ•  github pages๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด๊ฒƒ์ €๊ฒƒ ์†์„ ๋Œ”์ง€๋งŒ ์ •์ž‘ ์˜์–ด๋กœ ์˜ฌ๋ฆฐ ์ปจํ…์ธ ๋Š” ์•„์ง 2๊ฐœ ๋ฐ–์— ์—†๋‹ค. ๋ง์„ค์ž„ ์—†๋Š” ํ–‰๋™๋ ฅ์€ ์ข‹์•˜์œผ๋‚˜ ์•„์‰ฌ์šด ๊พธ์ค€ํ•จ. ๐Ÿ’ป Work ๐ŸŒฑ ๋“œ๋””์–ด ๋‹ค์‹œ ํŒ€์ด ๋งŒ๋“ค์–ด์ ธ๊ฐ€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐœ๋ฐœํŒ€์„ ๋น„๋กฏํ•ด์„œ ๋‹ค๋ฅธ ํŒ€์—๋„ ์ƒˆ๋กœ์šด ์ธ์žฌ๊ฐ€ ๋“ค์–ด์™”๊ณ  ๋ชจ๋‘๋“ค ์กฐ๊ธˆ์”ฉ ์ ์‘ํ•ด๊ฐ€๋ฉด์„œ ์šด์˜์„ ์ •์ƒํ™”ํ•ด๊ฐ€๋Š” ์ค‘์ด๋‹ค. ๋‚˜ ์—ญ์‹œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค๊ณผ์˜ ํ‹ฐํ‚คํƒ€์นด๋ฅผ ๋งž์ถฐ์•ผํ•˜๋Š” ์ƒํ™ฉ์ธ๋ฐ, ์ด์ „ ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๊ณผ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์Šคํƒ€์ผ์— ์™œ ์ด๋ ‡๊ฒŒ ..
jekyll์„ ์‚ฌ์šฉํ•ด์„œ ํ…œํ”Œ๋ฆฟ์„ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ๊นŒ์ง€ ๋งŽ์€ ์šฐ์—ฌ๊ณก์ ˆ์ด ์žˆ์—ˆ์ง€๋งŒ ํ•ด๋ƒˆ๋‹ค. ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์•„๋ž˜์˜ ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ์˜ค์‹œ๋ฉด ๋œ๋‹ค. ๐Ÿ‘‡๐Ÿป ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์€ github pages ๋กœ ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ - ํ…œํ”Œ๋ฆฟ๊ฐ€์ ธ์™€์„œ ์„ค์ •ํ•˜๊ธฐ (1) ๋ฐฐํฌ๋„ ์‰ฝ๊ฒŒ์‰ฝ๊ฒŒ! ๋„˜๋‚˜ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์€ github pages๋ฅผ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค! ์˜ˆ์ „์— ๋ธ”๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•ด์„œ ํฌํŠธํด๋ฆฌ์˜ค ๊ฒธํ•ด์„œ pages๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ฐ€ ์ง€์šด์ ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ์˜์–ด์šฉ์œผ๋กœ ํ•˜๋‚˜ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„์„œ mindevlog.tistory.com ๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ruby์—†์ด๋„ jekyll ํ…œํ”Œ๋ฆฟ๊ฐ€์ ธ์™€์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ปค์Šคํ…€ํ•˜๊ณ  ํ•˜๋ ค๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋กœ์ปฌ์— ํด๋ก ํ•ด์„œ ์จ์•ผํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ... ๋ฌดํŠผ ๋‚˜๋Š” ๋กœ์ปฌ์—์„œ๋„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ ์ƒํ™ฉ์ด ๋˜์—ˆ๊ณ , ๋ง˜๊ป ์ปค์Šคํ…€์„ ์‹œ์ž‘ํ•˜์ž!!!! ๊ณ  ๋ง˜์„ ๋จน๊ธฐ ์‹œ์ž‘ํ•˜..
๋ฐฐํฌ๋„ ์‰ฝ๊ฒŒ์‰ฝ๊ฒŒ! ๋„˜๋‚˜ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์€ github pages๋ฅผ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค! ์˜ˆ์ „์— ๋ธ”๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•ด์„œ ํฌํŠธํด๋ฆฌ์˜ค ๊ฒธํ•ด์„œ pages๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ฐ€ ์ง€์šด์ ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ์˜์–ด์šฉ์œผ๋กœ ํ•˜๋‚˜ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์—ฌ๊ธฐ์— ๊ธ€์„ ์˜ฌ๋ฆด๊ฑฐ๋ผ์„œ ํฌ์ŠคํŒ…์ด ๋Šฆ์–ด์งˆ ์ˆ˜๋„ ์žˆ์–ด์š”. ํ•œ๋ฒˆ ์ฐจ๊ทผ์ฐจ๊ทผ ์ ์–ด๋ณด๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ ์œผ๋กœ ์ €๋Š” jekyll theme๋ฅผ ์‚ฌ์šฉํ•  ๊ฑฐ๋ผ์„œ ๋‚ด๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ๋”. ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. jamstackthemes.dev jekyllthemes.org jekyllthemes.io jekyll-themes.com ์ œ๊ฐ€ ์„ ํƒํ•œ ํ…Œ๋งˆ๋Š” https://jekyllthemes.io/theme/mediumis..
์ด๊ฒƒ์ €๊ฒƒ ํด๋ก ์ฝ”๋”ฉํ•ด๋ณด๋ฉฐ ๋งŒ๋“ค๋˜ ์‹œ์ ˆ์— ๋งŽ์ด ์ ‘ํ–ˆ๋˜ mongoDB. ์ด ๋•Œ๋Š” ๊ทธ์ € ๋”ฐ๋ผํ•˜๊ธฐ ๊ธ‰๊ธ‰ํ•ด์„œ mongoDB ๋ž‘ atlas ๋ถ™๋Š”๊ฒŒ ๋ญ๊ฐ€ ๋‹ค๋ฅธ์ง€ ๋ชฐ๋ž๋‹ค. ๊ทธ๋ƒฅ ์—…๋ฐ์ดํŠธ ๋ฒ„์ ผ์ธ๊ฐ€? ๋ผ๋ฉฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ทธ์ € ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ์— ๋ฐ”๋นด๋˜ ๊ทธ ์‹œ์ ˆ. ์ด์ œ ์ง€์‹์˜ ํ’€์„ ๋„“ํ˜€๊ฐ€์•ผํ•˜๋Š” ์ˆœ๊ฐ„์ด ์™”๋‹ค. MongoDB ์˜คํ”ˆ ์†Œ์Šค NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฉฐ, ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์กฐํšŒ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค. MongoDB Atlas MongoDB์˜ ๊ด€๋ฆฌํ˜• ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋กœ, MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํด๋ผ์šฐ๋“œ์—์„œ ์‰ฝ๊ฒŒ ๋ฐฐํฌ, ์šด์˜ ๋ฐ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค MongoDB vs MongoDB Atlas 1. ๋ฐฐํฌ ๋ฐ ์šด์˜ MongoDB MongoDB๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค. ์„œ๋ฒ„์˜ ํ™•์žฅ, ๋ณต์ œ ์„ค์ • ๋“ฑ์„..
๊ฐœ๋ฐœ์ž๋กœ ์ปค๋ฆฌ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ผํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์ง€ 1๋…„์ด ์ง€๋‚ฌ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๊ณ ๋Œ€ํ•˜๊ณ  ๊ณ ๋Œ€ํ–ˆ๋˜ 1๋…„์ด ์ง€๋‚ฌ๋‹ค. '1๋…„์ฏค ์ง€๋‚˜๋ฉด ๋‚˜๋Š” ๊ฝค๋‚˜ ๋งŽ์ด ์„ฑ์žฅํ•ด์žˆ๊ฒ ์ง€?', '์ด๊ฒƒ์ €๊ฒƒ ๋‹ค ํ•  ์ค„ ์•Œ๊ฒ ์ง€?', '๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์–ด๋А ์ •๋„ ๊ฐ์ด ์žกํ˜€์žˆ๊ฒ ์ง€?' ๋“ฑ์˜ ๋‚˜ ์Šค์Šค๋กœ๊ฐ€ ๊ฐ€์กŒ๋˜ ๊ธฐ๋Œ€๋“ค์ด ๋งŽ์•˜๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์จ๋จธ๋ฆฌ ํ•ด๋ณด์ž๋ฉด ์Šค์Šค๋กœ์—๊ฒŒ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ์„ฑ์žฅ์€ ์•„์ง ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์„ฑ์žฅ์„ ์•ˆ ํ–ˆ๋‹ค๊ณ ๋Š” ๋ชปํ•˜๊ฒ ์ง€. ์–ด์จŒ๋“  '๊ฒฝํ—˜์น˜'๋ฅผ ์–ป์—ˆ์œผ๋‹ˆ๊น ๋ง์ด๋‹ค. ์•„์ง๊นŒ์ง€๋„ ์–ด๋””๋ก ๊ฐ„ ์ด์ง์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, '์‹ ์ž…'์˜ ํƒ€์ดํ‹€์„ ๋–ผ์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ์ธ 30๋Œ€ ์ค‘๋ฐ˜์˜ ์‹ ์ž… 'ํ”„๋ก ํŠธ์—”๋“œ' ๊ฐœ๋ฐœ์ž์˜ ํšŒ๊ณ ์ด์ž ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋А๋‚€ ์ ์„ ์ด์•ผ๊ธฐํ•ด๋ณผ๊นŒ ํ•œ๋‹ค. 1. ๊ฐœ๋ฐœ์ผ๋กœ ๋จน๊ณ  ์‚ด ์ˆ˜ ์žˆ๊ฒ ๊ตฌ๋‚˜! ์ง€๋‚œ 1๋…„์„ ๋Œ์ด์ผœ๋ณด๋ฉด์„œ ์ œ์ผ ๋จผ์ € ๋“  ์ƒ๊ฐ์€ ๋ฐ”๋กœ ํ•˜๋‚˜๋‹ค. "์•„~! ๋‚˜..
container๋ฅผ ์ƒ‰์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€๋กœ ๋„ฃ์–ด์•ผ ํ•  ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๋•Œ, ๊ฐ„๋‹จํ•˜๊ฒŒ~ ๋‘ ๊ฐ€์ง€ ์ •๋„์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค! 1. src ์ด๋ฏธ์ง€ ์ฃผ์†Œ๋ฅผ ์“ธ ๋•Œ Container( width: 155.0.w, decoration: BoxDecoration( image: DecorationImage( image: NetworkImage( src ), fit: BoxFit.cover ), ), ) 2. image assets ์„ ์“ธ ๋•Œ Container( width: 155.0.w, decoration: BoxDecoration( image: DecorationImage( image: AssetImage('/assets/image.png'), fit: BoxFit.cover ), ), ) ์ด๋ฏธ์ง€ ์ฃผ์†Œ๋ฅผ ์–ด..
์šด์˜ ์„œ๋น„์Šค์™€ ์Šคํ…Œ์ด์ง€ ๋‹จ๊ณ„ ์„œ๋น„์Šค์˜ ๊ฐ„๊ทน์ด ๋‚ ์ด ๊ฐˆ์ˆ˜๋ก ์‹ฌํ•ด์ง€๊ณ  ์žˆ๋‹ค. ๊ธฐ์กด์˜ ์šด์˜๋˜๋Š” ์„œ๋น„์Šค์˜ ์ˆ˜์ •์ด๋‚˜, ๋ฒ„๊ทธ ํ˜น์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•  ๋•Œ ๋‚œ๊ฐํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์Šคํ…Œ์ด์ง€ ๋‹จ๊ณ„์—์„œ QA ํ›„์— ์ง„ํ–‰์„ ํ•ด์•ผํ•˜๋‹ค๋ณด๋‹ˆ ๊ผฌ์—ฌ์„œ ์Šคํ…Œ์ด์ง€์— ์žˆ๋Š” ์šด์˜ ์„œ๋น„์Šค์—๋Š” ์—†๋Š” ํŒŒ์ผ์ด merge ๋˜์–ด์žˆ์„ ๋•Œ๋„ ์žˆ๊ณ  ์•Œ๊ฒŒ๋ชจ๋ฅด๊ฒŒ ์ด์ƒํ•˜๊ฒŒ ๊ผฌ์ผ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ...์•ˆ ์ƒ๊ธธ๊ฒƒ ๊ฐ™์€๊ฐ€? .... ์ƒ๊ธด๋‹ค. ์™œ๋ƒ ๋Œ€๋ถ€๋ถ„์€ ํ˜‘์—…์„ ํ•˜๋‹ˆ๊น ๋ง์ด๋‹ค .... ใ…Ž..... ์˜ˆ์ƒ์น˜๋ชปํ•˜๊ฒŒ ์ƒ๊ธด๋‹ค์•„์•„์•„์•„ ๋ฌดํŠผ ์ด๋Ÿฐ ๋‚œ๊ฐํ•œ ์ƒํ™ฉ์—์„œ ํ•ด๋‹น ์ž‘์—… ์ปค๋ฐ‹๋“ค๋งŒ cherrypick์ด๋ผ๋Š” ๊ฒƒ์œผ๋กœ ๋ฝ‘์•„๋‚ด์„œ ์šด์˜ ์„œ๋น„์Šค์— merge ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค. Cherry Pick (์ฒด๋ฆฌํ”ฝ) - ํŠน์ • commit๋งŒ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ โ–ถ Cherry Pick..
React-Query ์žฅ์  ์ค‘์˜ ํ•˜๋‚˜์˜€๋˜ ์บ์‹ฑ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์บ์‹ฑ์„ ์ด์•ผ๊ธฐ ์ „์— ์•Œ์•„๋‘๋ฉด ์ข‹์„ tool์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ReactQueryDevtools ์ด๋ผ๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ fetching ๋˜๊ณ  ๊ทธ ์ƒํƒœ๊ฐ’์ด๋ผ๋˜๊ฐ€ ๋‚ด๋ถ€ ๋‚ด์šฉ์„ ์ž์„ธํžˆ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” tool์ž…๋‹ˆ๋‹ค. react query ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. โ–ถ ReactQueryDevtools ์‚ฌ์šฉ๋ฒ• import { ReactQueryDevtools} from 'react-query/devtools'; //์ด๋ ‡๊ฒŒ import ํ•ฉ๋‹ˆ๋‹ค function App() { return ( ); } ์•„๋ž˜์™€ ๊ฐ™์ด ํ™”๋ฉด ํ•˜๋‹จ ์˜ค๋ฅธ์ชฝ์— ๋œฌ ๋ฒ„ํŠผ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์–ด์š”. ํด๋ฆญ์„ ํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ ํ™”๋ฉด์ฒ˜๋Ÿผ ๋œน๋‹ˆ๋‹ค. tools ์•ˆ์—์„œ fresh ,..
React-Query ๋น„๋™๊ธฐ ํ†ต์‹  fetch, axios ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋น„๋™๊ธฐ ๋กœ์ง์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ช‡ ๊ฐ€์ง€ ์žˆ์ง€๋งŒ react-query๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค(์บ์‹ฑ, ๊ฐ’ ์—…๋ฐ์ดํŠธ, ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋“ฑ)์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ๋„ ๋งค์šฐ ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๋กœ์ง์„ store์—์„œ ๊ฐœ๋ฐœํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. store๋Š” client์—์„œ state๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚ด๋ถ€์— client data ์™€ server data ๊ฐ€ ๊ณต์กด์„ ํ•˜๊ฒŒ ๋˜๋Š” ์ˆœ๊ฐ„์ด ์ƒ๊ฒจ๋‚ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ํ˜ผ๋ž€์„ ๋นš์–ด๋‚ด๋Š”๋ฐ react-query๋ฅผ ..
์•ฝ 1์—ฌ๋…„ ๊ฐ€๊นŒ์ด ํ”Œ๋Ÿฌํ„ฐ๋กœ ์•ฑ์„ ์ œ์ž‘ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์—ฌ์ „ํžˆ ์†Œ์†Œํ•œ ๊ฐœ๋…๋“ค์„ ์ œ๋Œ€๋กœ ์•Œ์ง€ ๋ชป ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. GetX๋กœ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ stateless ์œ„์ ฏ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์‚ฌ์‹ค stateful์ด๋ผ๊ณ  getx๋ฅผ ๋ชป ์“ฐ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋…์ด ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค๋ณด๋‹ˆ ๊ทธ์ € ์•ˆ ์“ฐ๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ. ๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์•ˆ์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ๋งŒ์œผ๋กœ ์œ„์ ฏ์ด ๋ณ€๊ฒฝ๋˜์•ผํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ทธ๋ƒฅ stateless๋กœ ์จ์•ผํ•˜๋Š”๊ฑธ๊นŒ getx๋กœ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ๊ฑธ๊นŒ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๊ณ , ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ธ์ง€ ์•Œ์ˆ˜๊ฐ€ ์—†์–ด์„œ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ•ด๋ณด๋ ค๊ณ  ์ž‘์„ฑํ•ด๋ณธ๋‹ค. โœ… Stateless Widget ํ™”๋ฉด์ด ๋กœ๋“œ๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ๊ทธ๋ ค์ง€๋Š” state๊ฐ€ ์—†๋Š” ์œ„์ ฏ์œผ๋กœ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ Data๊ฐ€ ์—†๋Š” ๊ฒƒ์„ ์˜๋ฏธ ์ด๋ฒคํŠธ ..
๋ฐ(Ming) ๐Ÿˆ‍โฌ›
Ming devlog