๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Progress/๐ŸŽ€ ๋…ธ๋งˆ๋“œ์ฝ”๋” ๋ฆฌ์•กํŠธ4๊ธฐ

[4์ฃผ์ฐจ] ์ฃผ๊ฐ„ํšŒ๊ณ ๋ก

728x90
 
 

๐Ÿ—บ๏ธ 4์ฃผ์ฐจ (24.3.6 - 3.12)

 

๐Ÿชด ํ•ต์‹ฌ 3์ค„ ์š”์•ฝ

- ์˜คํ”„๋ผ์ธ ๋ชจ๊ฐ์ฝ” ๋„ˆ๋ฌด ์žฌ๋ฐŒ์—ˆ๋‹ค.

- ์˜ˆ์Šต, ๊ณผ์ œ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์‹œ์ž‘ํ•˜๊ธฐ

- ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„ ๋Š˜๋ฆฌ๊ธฐ

 

๐ŸŽ  ์ด๋ฒˆ ์ฃผ ๋ชฉํ‘œ 

โœ… ์ผ๊ณผ ๊ณต๋ถ€ ๋ฐธ๋Ÿฐ์Šค ์ž˜ ๋งž์ถ”๊ธฐ - ์ด๊ฑฐ ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต๋„ค!

โœ… ์ฑŒ๋ฆฐ์ง€ ์˜ฌ์ถœํ•˜๊ธฐ

โœ…  ์˜คํ”„๋ผ์ธ ๋ชจ๊ฐ์ฝ” ์ฐธ์—ฌํ•˜๊ธฐ

 

 

๐Ÿฅž ์นญ์ฐฌํ•˜๊ณ  ์‹ถ์€ ์ 

- ๊ณ„์† ๋ญ”๊ฐ€๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ์ 

- ์˜คํ”„๋ผ์ธ ๋ชจ๊ฐ์ฝ” ๊ฐ„ ์ 

 

 

๐Ÿ† ๊ณ ์น˜๊ฑฐ๋‚˜ ๋ฒ„๋ ค์•ผ ํ•  ์ 

- ๊ธฐ๋กํ•˜์ง€ ์•Š์€ ์ 

- ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ํ•˜์ง€ ์•Š๋Š” ์ 

 

๐Ÿ’ ์ด๋ฒˆ ์ฃผ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

 1. isLoading๊ณผ isFetching ์˜ ์ฐจ์ด์ 

isFetching

isFetching์€ ์–ด๋– ํ•œ react-query์š”์ฒญ ๋‚ด๋ถ€์˜ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€ ์— ๋”ฐ๋ผ true/false๋กœ ๋‚˜๋ˆ„์–ด ์ง„๋‹ค.

=> ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ, ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ๋‹ค์‹œ ํ•  ๋–„


isLoading

isLoading์€ ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ์กฐ์ฐจ ์—†์ด์ฒ˜์Œ ์‹คํ–‰๋œ ์ฟผ๋ฆฌ ์ผ ๋•Œ ๋กœ๋”ฉ ์—ฌ๋ถ€์— ๋”ฐ๋ผ true/false๋กœ ๋‚˜๋ˆ„์–ด ์ง„๋‹ค.

์ฆ‰, ๊ฒฐ๋ก ์ ์œผ๋กœ isLoading๊ณผ isFetching์€ ๋น„์Šทํ•˜๊ฒŒ '๋กœ๋”ฉ' ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ์กด์— ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š๋ƒ ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

 => ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ '์ฒ˜์Œ' ํ•  ๋•Œ 

https://velog.io/@himprover/React-query-%EC%97%90%EC%84%9C-isLoading%EC%9D%B4%EB%9E%91-isFetching%EC%9D%80-%EB%AD%90%EA%B0%80-%EB%8B%A4%EB%A5%B4%EC%A7%80

 

React-query ์—์„œ isLoading์ด๋ž‘ isFetching์€ ๋ญ๊ฐ€ ๋‹ค๋ฅด์ง€?

์ฃผ์ธ๋‹˜.... ๊ทธ ์ž์‹์€ ๊ฐ€์งœ.....

velog.io

 

 

2. img ํƒœ๊ทธ ์‚ฌ์šฉ ์‹œ ๋‚˜์˜ค์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋กœ ๋Œ€์ฒดํ•˜๊ธฐ

๋””์ฆˆ๋‹ˆ ๊ณผ์ œ๋ฅผ ํ•˜๋˜ ๋„์ค‘, 

์ด๋Ÿฐ ์‹์œผ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ๋ถˆ๋Ÿฌ์™€์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.

404 ์—๋Ÿฌ๋ฅผ ๋ฑ‰์œผ๋ฉฐ ๋–ผ์ž‰ ๋ชฐ๋ผ ์ด๋ฏธ์ง€๊ฐ€ ๋˜์–ด์žˆ์—ˆ๋‹ค.

 

์ฒ˜์Œ์—” 404 response ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ๊นŒ,, ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฑธ๋Ÿฌ๋‚ด์•ผํ•˜์ง€ ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€, 

๋ญ”๊ฐ€ ๋ณต์žกํ•ด๋ณด์—ฌ์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. 

(์‚ฌ์‹ค ๊ทธ๋ƒฅ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค :-D )

 

์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด ์ €๋ ‡๊ฒŒ ๋œจ๋Š” ๋Œ€์‹  alt ๋กœ ๋Œ€์ฒดํ•˜๋ฉด ๋˜์ž๋‚˜? ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, 

alt ์†์„ฑ์€ text ๋งŒ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์ด๋‹ค. 

๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ–ˆ๋‹ค. 

 

mdn ์—์„œ ํƒœ๊ทธ ๊ด€๋ จํ•ด์„œ ์ฝ๋˜ ์ค‘, img ํƒœ๊ทธ์— onError ๋ผ๋Š” ์†์„ฑ์ด ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ์•˜๋‹ค. 

์˜ค ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์‹คํ–‰ํ•  ์ด๋ฒคํŠธ ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค๊ตฌ?

 

import mickeyImage from '../assets/mickey.png' // ๋Œ€์ฒดํ•  ์ด๋ฏธ์ง€

// onError ์‹œ ์‹คํ–‰ํ•  ํ•จ์ˆ˜
const addDefaultImg = (e: SyntheticEvent<HTMLImageElement, Event>) => {
        e.currentTarget.src = mickeyImage;
    };
    

...
 <img src={`${character.imageUrl}`} onError={addDefaultImg} />
...

 

์ด๋ ‡๊ฒŒ ๋Œ€์ฒดํ•  ์ด๋ฏธ์ง€์˜ ์ฃผ์†Œ๋ฅผ onError ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ, src ์— ๋„ฃ์–ด์ค€๋‹ค๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์คฌ๋‹ค. 

 

์—†๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋Œ€์ฒด๋œ ๋ชจ์Šต. ์ด๋ฏธ์ง€๋„ ์ž˜ ๊ณจ๋ž๋‹ค. ํฌํฌ

 

 

 

 

 

๐Ÿ‘Ÿ ์ฃผ๊ฐ„ ํšŒ์˜์™€ ์กฐ๋ณ„ ํ™œ๋™

์žฌํ™˜๋‹˜ ์ฃผ์ฒด๋กœ ํ•œ ์˜คํ”„๋ผ์ธ ๋ชจ๊ฐ์ฝ”์— ๊ฐ”๋‹ค์™”๋‹ค. 

๊ฒฐ๋ก ๋ถ€ํ„ฐ ์–˜๊ธฐํ•˜๋ฉด ๋„ˆ๋ฌด ์žฌ๋ฐŒ์—ˆ๋‹ค. ๊ฑฐ์˜ ๋ญ 3๊ฐœ์›”์น˜ ์›ƒ์„ ๊ฑด ๋‹ค ์›ƒ๊ณ  ์˜จ ๊ฒƒ ๊ฐ™๋‹ค. ใ…‹ใ…‹ใ…‹ใ…‹ 

์˜ˆ์•ฝ๋œ ์Šคํ„ฐ๋”” ๋ฃธ์˜ ๊ตฌ์กฐ๊ฐ€ ๊ฐ•์˜์‹ค ์ฒ˜๋Ÿผ ๋˜์–ด์žˆ๋Š” ์ ์€ ์กฐ๊ธˆ ์•„์‰ฌ์› ์ง€๋งŒ, 

์ธ์›์ด ๊ฑฐ์˜ 40๋ช… ๊ฐ€๊นŒ์ด ์™”๋‹ค๊ณ  ํ•˜๋‹ˆ ์–ด์ฉ” ์ˆ˜ ์—†์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. 

 

๊ธฐ์„ ๋‹˜์ด ์•ฝ๊ณผ๋„ ๋‚˜๋ˆ ์ฃผ์…จ๋Š”๋ฐ,, ์  ์žฅ ๋˜ ๋Œ€๊ธฐ์„ ์ด์•ผ.. ๋‚œ ๋˜ ์ˆญ๋ฐฐํ•ด์•ผํ•ด..

 

์›์žฅ๋‹˜์ด๋ž‘ ๊ฐ™์ด ์•‰๊ฒŒ ๋ผ์„œ ์ฒœ์žฌ๊ฐ™์€ ์‡ผํ•‘๋ชฐ ๊ฒฝํ—˜๋‹ด๋„ ๋“ค์—ˆ๋Š”๋ฐ ๋„ˆ๋ฌด ์žฌ๋ฐŒ์—ˆ๋‹ค.

ํ‚ค์บก๋„ ๊ตฌ๋งคํ•ด์ฃผ์…จ๋‹ค ๐Ÿฅน

 

๋งŒ๋‚˜๊ณ  ์‹ถ์—ˆ๋˜ ๋ถ„๋“ค์„ ๋‹ค ๋งŒ๋‚˜๊ณ , ์ข‹์€ ์‹œ๊ฐ„์„ ๋ณด๋‚ธ ๊ฒƒ ๊ฐ™์•„ ๋งŒ์กฑ์Šค๋Ÿฌ์› ๋‹ค.

์ž๋ฆฌ๊ฐ€ ์—†์–ด ์–˜๊ธฐ ๋ชปํ–ˆ๋˜ ๋ถ„๋“ค๋„ ์ง‘ ๊ฐ€๋Š” ๊ธธ์— ์ž ๊น ์ธ์‚ฌํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๋„ˆ๋ฌด ๋ฐ˜๊ฐ€์› ๋‹ค โ˜บ๏ธ 

 

 

 

 

 

+

๋ณ„๊ฐœ๋กœ ์›์žฅ๋‹˜์ด ํ•˜์‹  ๊ณผ์ œ๋ฅผ ๊ตฌ๊ฒฝํ•˜๋‹ค ๋ณ„ ์ƒ๊ฐ์—†์ด ๋ฆฌ์•กํŠธ๋กœ ๋งŒ๋“  ๊ฒƒ ๊ฐ™์ง€ ์•Š๋‹ค๊ณ  ๋ง์”€๋“œ๋ ธ๋Š”๋ฐ, 

์›์žฅ๋‹˜ ์ฃผ๊ฐ„ํšŒ๊ณ ๋ก

์•„๋‹ˆ ์ €๋ ‡๊ฒŒ ๊ฐ•ํ•˜๊ฒŒ ์–˜๊ธฐํ•˜๋ ค๊ณ  ํ•œ ๊ฑด ์•„๋‹Œ๋ฐใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ 

๋ณธ์˜ ์•„๋‹ˆ๊ฒŒ ์ถฉ๊ฒฉ์„ ์•ˆ๊ฒจ๋“œ๋ ค์„œ ์ฃ„์†ก์“ฐ,,,,, ใ…‹ใ…‹ใ…‹์ฟ ใ…œใ…œใ…œใ…œ

 

๊ทธ๋ฆฌ๊ณ  ์ฃผ๊ฐ„ํšŒ๊ณ ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋Œ€ํ™”๊ฐ€ ์˜ค๊ฐ”๋‹ค. 

 

 

๋ง๋กœ ํ•  ๋• ์‰ฌ์› ๋Š”๋ฐ, 

๊ธ€๋กœ ์„ค๋ช…ํ•˜๋ ค๋‹ˆ ์‰ฝ์ง€ ์•Š์•˜๋‹ค

 

 

๋‘ ๋ˆˆ์„ ์˜์‹ฌ. ๋„ค..? ๋นก์ค€๋‹˜์ด ๋‚˜๋ณด๊ณ  ๋ฉ‹์ง€๋‹ค๊ณ ....????? ๐Ÿ˜๐Ÿ˜ฎ

์—„๋งˆ ๋นก์ค€๋‹˜์ด ๋‚˜ ๋ฉ‹์ง€๋Œ€~

 

ํ—ค์ญ.. ๋” ๋ฉ‹์ง€๊ฒŒ ๋Œ€๋‹ตํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค. 

 

 

์Œ ์ด๊ฑธ ์™œ ๋‚จ๊ธฐ๋ƒ๋ฉด, 

์‚ฌ์‹ค ์ž‘๋…„์˜ ๋ฐ˜ ์ •๋„๋Š” ๊ณ„์†ํ•ด์„œ ๋‚ด๊ฐ€ ๋ชปํ•œ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ–ˆ๊ณ ,

๊ณ ๋ฏผ์„ ๋งŽ์ด ํ•˜๋‹ค๊ฐ€ ์ง€๊ธˆ์€ ๊ณต๋ถ€๋ฅผ ๋ณ‘ํ–‰ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๊ธธ์ด ์žˆ๋Š”์ง€ ํƒ์ƒ‰์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

๊ทธ๋ ‡๋‹ค๊ณ  ๊ฐœ๋ฐœ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒŒ ์‹ซ์€ ๊ฑด ์ „ํ˜€ ์•„๋‹ˆ๋ผ์„œ, ์‚ฌ์‹ค์€ ๊ฐ€๋ฒผ์šด ๋งˆ์Œ์œผ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š”๋ฐ

๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ๋” ์žฌ๋ฐŒ์–ด์ง€๊ธด ํ–ˆ๋‹ค.

์ƒ๊ฐ๋ณด๋‹ค ๊ธฐ์ˆ ์ ์ธ ์ฃผ์ œ๋กœ ๋‚ด ์˜๊ฒฌ์„ ๋งํ•  ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ๋Š”๋ฐ (์ž˜ ๋ชฐ๋ผ์„œ ๊ทธ๋ ‡๊ธฐ๋„ ํ•˜๊ณ )

์ด ์ „์— ํ•œ ๊ณต๋ถ€๋“ค์ด ๊ทธ๋ž˜๋„ ๋‚จ์•„๋Š” ์žˆ๊ตฌ๋‚˜ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๋‚˜๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค! ์•ผํ˜ธ!  

 

 

๐ŸŒต ์ƒ๊ฐ ๊ธฐ๋ก

๊ทผ๋ฐ ์—ญ์‹œ๋‚˜ ํŒŒ๊ณ ๋“ค๋ฉด์„œ ๊ณต๋ถ€ํ•˜์ง€ ์•Š์œผ๋‹ˆ ๋Š˜์ง„ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. 

728x90
๋ฐ˜์‘ํ˜•