๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

ํ˜„์žฌ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ page4์— ์žˆ๋Š” ๋ฒ„ํŠผ์„ ํ† ๊ธ€ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์„ controller์—์„œ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ณ  statelessWidget์—์„œ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— dispose๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฃฝ์ผ์ˆ˜๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์ด์˜€๋‹ค. ํ•ด๊ฒฐ์ฑ… 1. ๋ฒ„ํŠผ์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ผ์šฐํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ํ•จ์ˆ˜๋„ ๊ฐ™์ด ์‹คํ–‰์‹œ์ผœ์ฃผ๊ธฐ ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐํ•ด๋ด๋„ ์•ˆ ์ข‹์€ ์ฝ”๋“œ์ด๊ณ (ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹) ํšŒ์‚ฌ ํ”Œ๋Ÿฌํ„ฐ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋„ ๋ฌผ์–ด๋ณด๋‹ˆ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ–ˆ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๋Š” controller ํŒŒ์ผ์— ๋งŒ๋“ค์–ด์„œ ํด๋ฆญ ๋™์ž‘์ด ์ผ์–ด๋‚  ๋•Œ๋งˆ๋‹ค ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. 2. onClose() ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€๋ฅผ ๋– ๋‚˜๋ฉด ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ญ์ œ์‹œํ‚ค๊ธฐ ์ด ๋ฐฉ๋ฒ•์ด ์ œ์ผ ํ•ฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ•์ธ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•ด์ค˜๋„ ๋˜๊ณ  ์•ˆ๊ทธ๋ž˜๋„ ๋œ๋‹ค. ๋ฌธ์ œ..
์›น ๊ฐœ๋ฐœ์‹œ์— API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ œ์ผ ๋จผ์ € ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ์ด request, axios, jQuery ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ fetch() ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค(bundle)ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋‚ญ๋น„๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋ฌผ๋ก  ๋‚˜๋Š” ์ฃผ๋กœ reactJs, nextJs ๋กœ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— axios๋ฅผ ์จ์„œ ํ˜ธ์ถœํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ์ด๋ฒˆ์— ์ด๋ฏธ์ง€ url์—์„œ ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ fetch ํ•จ์ˆ˜๋ฅผ ์จ์„œ response๋ฅผ ๋ฐ›์•„์˜ฌ ์ผ์ด ์žˆ์—ˆ๋‹ค. ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์„œ ์•Œ์•„๋ณด๋‹ค๊ฐ€ fetchํ•จ์ˆ˜๋ฅผ ์ด๋ ‡๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฒธ์‚ฌ๊ฒธ์‚ฌ- fetch์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿ“ข Fetch ๋ฅผ ์•Œ์ž! fetch() ํ•จ์ˆ˜๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต์„..
๐Ÿ“ข Error: App(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null. โœ… ์˜ค๋žœ๋งŒ์— ๋งŒ๋‚œ ์ •๋ง ๊ฐ„๋‹จํ•œ ์—๋Ÿฌ! ์ตœ๊ทผ์— ๋งŒ๋‚œ ์—๋Ÿฌ๋“ค์€ ๊ธฐ๋ณธ 2์‹œ๊ฐ„ ์žก์•˜๋˜๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ, ์ด ์—๋Ÿฌ๋Š” ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฐพ์•„๋ƒˆ๋‹ค. ๊ด„ํ˜ธ๊ฐ€ ์–ด๋”˜๊ฐ€์—์„œ ๋ฏธ์”ฝ๋˜์—ˆ๋˜๊ฒƒ!! ๊ทธ๋ž˜์„œ return ์˜ ์ž๋ฆฌ์— return ์ด ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์•„์„œ ์ƒ๊ธด ์—๋Ÿฌ์ด๋‹ค! ์–ด๋”˜๊ฐ€์—์„œ return ์„ ์ œ๋Œ€๋กœ ํ•ด์ฃผ์ง€ ๋ชป ํ•  ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ์—๋Ÿฌ์ด๋‹ˆ, ์ฐฌ์ฐฌํžˆ ์ฝ”๋“œ๋ฅผ ์‚ดํ”ผ๋‹ค๋ณด๋ฉด ๋ฐ”๋กœ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค!
npm install qs Content-Type ์ด๋ž€? api ์—ฐ๋™ ์‹œ์— ์ž์›์„ ๋ณด๋‚ผ ๋•Œ, ๊ทธ ์ž์›์˜ ๋ช…์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. body์— ๋“ค์–ด๊ฐˆ ๋‚ด์šฉ์„ header์—์„œ ๋ช…์‹œํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ค‘์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํƒ€์ž…์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, Textํƒ€์ž…์œผ๋กœ๋Š” text/css, text/javascript, text/html, text/plain ๋“ฑ file์„ ์‹ค์–ด๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” multipart/form-data๊ฐ€ ์žˆ๊ณ  Application ํƒ€์ž…์œผ๋กœ๋Š” application/json, application/x-www-urlencoded๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. REST API๋ฅผ ์“ฐ๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์˜ฌ ๋•Œ ์ฃผ๋กœ application/json, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ, multipart/form-data๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค ์ด๋ฒˆ์— ..
๐Ÿ“ข ํ”„๋กœ๋•์…˜ ์šด์˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด์„œ ์Šคํ…Œ์ด์ง€์— ๋จผ์ € ๋ฐฐํฌ๋ฅผ ํ•˜๊ณ  ๊ทธ ์Šคํ…Œ์ด์ง€ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋ธŒ๋žœ์น˜ develop์— ๋ชจ๋“  ์ž‘์—…๋“ค์„ ์šฐ์„ ์ ์œผ๋กœ merge ํ–ˆ์—ˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋กœ ์ธํ•ด์„œ master์™€ develop์˜ ๋ฒ„์ „ ์ฐจ์ด๊ฐ€ ์žˆ์–ด์„œ ๊ธ‰ํ•˜๊ฒŒ master์—์„œ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•ด์•ผ ํ–ˆ๋‹ค. ์ด๋ฏธ ๋ฐฐํฌ๋˜์–ด์žˆ๋Š” ๋ฒ„์ „์—์„œ ๊ธ‰ํ•œ ๋ฌธ์ œ๋‚˜ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์“ฐ๋Š” ์ „๋žต์„ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด hotfix์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋ธŒ๋žœ์น˜๋กœ๋งŒ ์ž‘์—…์„ ํ•ด์™”๊ธฐ์— ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์ธ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์กฐ์‚ฌ๋ฅผ ํ–ˆ๋‹ค. ์‹œ๋‹ˆ์–ด : 'ํ•ซํ”ฝ์Šค ๋”ฐ์„œ ์ง„ํ–‰ํ•ด์ฃผ์„ธ์š”~' me : ?????????????? Hotfix๋Š” ์งง์€ ํ˜ธํก์˜ ๋ธŒ๋žœ์น˜๋กœ develop์—์„œ ๋”ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ master์—์„œ ๋”ฐ์„œ ๋งŒ๋“ค์–ด์ง€๊ณ  ํ•ฉ์ณ์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  develop์—๋„..
[๋ฌธ์ œ๋ฐœ์ƒ] ์•„์•„์•„์•„์•„์•„์•„๋‹ˆ ์™œ ๋„๋Œ€์ฒด flutter์— listview ๋ฅผ ์“ฐ๋ฉด ์ด์ƒํ•œ ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์ธ๊ฐ€! ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™”๋ฉด ์œ„๋กœ ์˜ฌ๋ฆฌ๋ฉด ์ œ์ผ ์ฒ˜์Œ์— ์˜ฌ๋ผ์˜ค๋Š” ๋ฆฌ์ŠคํŠธ ์œ„๋กœ ๋งˆ์น˜ margin์„ ์ค€ ๊ฒƒ์ฒ˜๋Ÿผ ์—ฌ๋ฐฑ์ด ์ƒ๊ฒจ๋‚˜ ์žˆ๋‹ค. [ํ•ด๊ฒฐ์ฑ…] padding: const EdgeInsets.symmetric( horizontal: 20, vertical: 12), listview๋ฅผ ์จ์„œ ๋ฐ์ดํ„ฐ๋ฅผ map์œผ๋กœ ๋Œ๋ ค์„œ ํ™”๋ฉด์— ์˜ฌ๋ ค ์ค„ ๋•Œ ์š” ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค. horizontal, vertical ์ˆ˜์น˜๋ฅผ ๋ณ€ํ™”ํ•ด์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ์ด๊ฒƒ๋„ ์ž˜ ์จ์•ผํ•œ๋‹ค. ๋ญ”๊ฐ€ ... ๋ฌด์กฐ๊ฑด 0์œผ๋กœ ๋„ฃ์–ด๋„ ์ด์ƒํ•˜๋‹ค. ๋ญ”๊ฐ€ ์ด๊ฒŒ ์™„์ „ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„ ๋‹ต๋‹ต~~ํ•˜๋‹ค. โœ” ์ฐธ๊ณ ์ž๋ฃŒ https://velog.io/@tygerhwang..
๋ฒŒ์จ 7์›”์˜ ๋ฐ˜์ด ์ง€๋‚˜๊ฐ”๋‹ค. ๊ฑฐ์ฐฝํ•œ ๊ฒƒ์€ ์—†์ง€๋งŒ ์ด์ œ์•ผ ์ƒ๋ฐ˜๊ธฐ ํšŒ๊ณ ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋‹ค ์ž‘๋…„๋ถ€ํ„ฐ ์—ผ์›ํ•ด์˜ค๋˜ ์ผ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ์ทจ์—… ํ›„๊ธฐ์—์„œ๋‚˜ ๋ณด๋˜ ๊ณจ๋ผ์„œ ์ทจ์—…ํ•˜๋˜ ์ƒํ™ฉ์ด... ๋‚˜์—๊ฒŒ๋„ ๋น„์Šทํ•˜๊ฒŒ ์ผ์–ด๋‚ฌ๋‹ค!! ๐Ÿ˜ฒ ๋” ์ข‹์€ ์กฐ๊ฑด์— ํšŒ์‚ฌ๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ์ง€๊ธˆ ํšŒ์‚ฌ๋ฅผ ์„ ํƒํ–ˆ๋Š”๋ฐ, ์ง€๊ธˆ ํšŒ์‚ฌ๊ฐ€ ํ›จ์”ฌ ๋น„์ „์ด ์žˆ์–ด ๋ณด์˜€๊ณ  ํ˜„์žฌ ํ•จ๊ป˜ํ•˜๊ณ  ์žˆ๋Š” ๋‚ด ๋‚˜์ด ๋˜๋ž˜์˜ ๋™๋ฃŒ๋“ค์ด ์ข‹์•˜๋‹ค. ๋ฌผ๋ก  ์ •๋ง ๋‚ด ๋‚˜์ด ๋˜๋ž˜๋Š” ๋‹ค 5๋…„ ์ฐจ ์ด์ƒ์˜ ๊ฒฝ๋ ฅ์ž๋“ค์ด๋‹ค. ใ…Žใ…Žใ…Ž..... (๋‚˜์ด๊ฐ€ ๋ญฃ์ด์ค‘ํ•œ๋””!!!) ๋” ๋†’์€ ์—ฐ๋ด‰์„ ์ œ์‹œํ–ˆ๋˜ ๊ณณ์€ ํŒ€์›๋“ค์ด ๋‹ค ๋‚˜๊ฐ€์„œ ๋‹ค์‹œ ์…‹์—… ์ค‘์ธ ๊ณณ์ด๋ผ์„œ ๋น ๋ฅด๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐฐ์›Œ๋‚˜๊ฐ€๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ํ˜„์žฌ์˜ ํšŒ์‚ฌ์— ๋‚จ์•˜๋‹ค. ์—ฐ๋ด‰์€.... ์•ž์œผ๋กœ ๊ณ„์† ์˜ค๋ฅผ ํ…Œ๋‹ˆ... (....
๋ฆฌ์•กํŠธ๋ฅผ ์“ฐ๋‹ค ๋ณด๋ฉด ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ผ์ด ๋งŽ๋‹ค. ์ด๋•Œ ๋ฐ›์•„์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์ด ๋จผ์ € ์ฒ˜๋ฆฌ๋  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ฒ˜์Œ์—” ํ™”๋ฉด์— ์ž˜ ๋‚˜์˜ค๋Š”๋ฐ ์ƒˆ๋กœ๊ณ ์นจ๋งŒ ํ•˜๋ฉด ํ™”๋ฉด์— ์ œ๋Œ€๋กœ ์ถœ๋ ฅ์ด ์•ˆ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€. ๋ถ„๋ช…ํžˆ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ๋ง์ด๋‹ค. ์ด๋Ÿด ๋•Œ, code์˜ ์‹คํ–‰์„ ์‚ด์ง ์ง€์—ฐ์‹œ์ผœ์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค! ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๊ณผ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ ๋‘ ๊ฐ€์ง€์˜ ์‹คํ–‰์ด ์‹ฑํฌ๊ฐ€ ๋งž์ง€ ์•Š์•„์„œ ์ด๋Ÿฐ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์ด๋‹ค. ๐Ÿ˜ sleepํ•จ์ˆ˜๋Š” ์ž…๋ ฅํ•œ ์‹œ๊ฐ„๋งŒํผ code์˜ ์‹คํ–‰์„ ๋ฉˆ์ถฐ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์—๋Š” ๋”ฐ๋กœ sleep ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด delay ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. delay๋ชจ๋“ˆ๋„ ์•ˆ๋œ๋‹ค? ๊ทธ๋Ÿฌ๋ฉด setTimeout์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜..
Demo ํŽธ์ง‘ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฆฌ์ŠคํŠธ ์•ž์— ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด์„œ ๋”ฐ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ 'ํŽธ์ง‘ํ•˜๊ธฐ' ์™€ '์‚ญ์ œํ•˜๊ธฐ' ๋ฒ„ํŠผ์„ boolean ๊ฐ’์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋งŒ๋“ค๊ธฐ Listview๋กœ checkbox์™€ text๋ฅผ ํ•œ ์ค„๋กœ ๋„ฃ์–ด์„œ ๋งŒ๋“ค์–ด์ค€๋‹ค boolean๊ฐ’์œผ๋กœ checkbox๊ฐ€ ๋‚˜์˜ฌ๋•Œ์™€ ์•ˆ ๋‚˜์˜ฌ ๋•Œ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค ๋ฐ˜๋ณต๋˜์„œ ๋“ค์–ด๊ฐˆ checkboxmodal widget์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค Listview ์•ˆ์— ๋“ค์–ด๊ฐˆ checkboxmodal์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. title๊ณผ time์€ ํ•„์ˆ˜๋ผ์„œ required๋ฅผ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค. class CheckBoxModal { String title; bool value; String time; String purpose; CheckBoxModal( {r..
React๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Axios ํ˜น์€ Fetch์™€ ๊ฐ™์€ HTTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค Fetch API๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์œ„ํ•ด fetch()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‚ด์žฅ๋˜์–ด์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Axios์˜ ๊ฒฝ์šฐ์—๋Š” npm์ด๋‚˜ yarn์„ ์ด์šฉํ•ด์„œ ์„ค์น˜๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค promise ๊ธฐ๋ฐ˜์ด๋ผ์„œ ์ดํ–‰ ํ˜น์€ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” promise๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Axios vs Fetch ๋ฌธ๋ฒ• //Axios axios.get( url, { ์˜ต์…˜ }, {} ) or axios(url, { method: 'get', headers: { "Content-Type: "application/json" }, data: {}, }) //f..
โ–ช Git์€ ์•Œ๊ณ  ๋ณด๋ฉด ์ฐธ ํŽธํ•˜๊ณ , ๋‹ค์žฌ๋‹ค๋Šฅํ•œ ๋…€์„! ๊ทธ๋ ‡๋‹ค! ์•Œ๊ณ  ๋ณด๋ฉด ์ฐธ ๋‹ค์žฌ๋‹ค๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํŽธ๋ฆฌํ•œ ์•„์ด๋‹ค! ํ•˜์ง€๋งŒ ํ•œ๋ฒˆ ๊ผฌ์ด๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋‹ต์ด ์—†๋‹ค ๋จธ๋ฆฌ๊ฐ€ ์ ์  ์•„ํŒŒ์˜ค๋Š” ์ผ๋“ค์ด ๋ฐœ์ƒํ•œ๋‹ค! ํ•œ๋ฒˆ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ํ’€๊ณ  ๋‚˜๋ฉด ๋‹ค์‹œ๋Š” ์•ˆ ๋งŒ๋‚  ๊ฒƒ ๊ฐ™์ง€๋งŒ ์›ฌ๊ฑธ, ๊นƒํ—™์€ ๋˜ ๋งŒ๋‚œ๋‹ค ๐Ÿ˜ **์‹ค์ œ๋กœ ์“ฐ๋Š” ์šฉ์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์ ๊ธฐ ์œ„ํ•ด์„œ ์ค‘๊ฐ„์ค‘๊ฐ„ ์˜์–ด๋‹จ์–ด๋กœ ์žฌ์—ฐํ•ฉ๋‹ˆ๋‹คใ…‹** ์ƒˆ๋กœ ์‹œ์ž‘ํ•  ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์…‹ํŒ…ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ธฐ์กด์— ์žˆ๋˜ ํ”„๋กœ์ ํŠธ๋Š” 'A' ์›๊ฒฉ ์ €์žฅ์†Œ(Remote ์ €์žฅ์†Œ, ๋˜๋Š” ๊นƒํ—™ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ)์—์„œ cloneํ•ด์„œ ์•ˆ ์“ฐ๋Š” ํด๋”๋ฅผ ์†์•„์น˜๊ธฐํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํŒจํ‚ค์ง€ ๋“ฑ์„ ์…‹ํŒ…ํ–ˆ๋‹ค. ์ž! ์ด์ œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ก๋“ค์„ ์Œ“์•„๊ฐˆ 'B' ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ์ด์ œ ์†์•„์น˜๊ธฐํ•œ ํŒŒ์ผ๋“ค์„ 'B' ์›๊ฒฉ ์ €์žฅ์†Œ์— push ํ•˜๋ฉด ..
โ–ช AccessToken , RefreshToken ์›๋ฆฌ AccessToken , RefreshToken์€ ๋กœ๊ทธ์ธ, ํšŒ์› ๊ฐ€์ž… ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ์“ด ์ ์ด ์žˆ์ง€๋งŒ ์ œ๋Œ€๋กœ ๋ฉ”๋ชจํ•ด ๋‘” ์ ์€ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜๋Š” ๋‹จ์ˆœํžˆ accessToken์„ ๋ฐ›์€ ์ดํ›„์— ๋งŒ๋ฃŒ๊ฐ€ ๋˜๋ฉด RefreshToken์„ ๋‹ค์‹œ ๋ฐœ๊ธ‰ ๋ฐ›๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์•„๋‹ˆ์˜€๋‹ค!! ๐Ÿ˜ accessToken๊ณผ refreshToken์˜ ํฐ ์ฐจ์ด์ ์€ ์œ ํšจ๊ธฐ๊ฐ„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, accessToken ์ด 2-3์‹œ๊ฐ„ ์ •๋„๋ผ๋ฉด refreshToken์€ 2์ฃผ, ํ•œ ๋‹ฌ๊นŒ์ง€๋„ ์œ ํšจ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. user๊ฐ€ ๋กœ๊ทธ์ธ์„ ์š”์ฒญํ•˜๋ฉด server์—์„œ DB๋กœ ํšŒ์›์„ ํ™•์ธํ•˜๊ณ  server์—์„œ accessToken๊ณผ refreshToken์„ user์—๊ฒŒ ๋ฐœ..
๋ฐ(Ming) ๐Ÿฐ
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (11 Page)