[React] ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์ข‹์•„์š” ์œ ์ง€ํ•˜๊ธฐ
728x90

Today, What I learned?

๋‚ด ํŒŒํŠธ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ์ข‹์•„์š” ๊ด€๋ จ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋‹ด๋‹นํ•˜์ง€ ์•Š์•˜๋˜ ํŒŒํŠธ๋ผ ์ฝ”๋“œ๋ฅผ ๋“ค์—ฌ๋‹ค๋ณผ ์ผ์ด ๋งŽ์ง€ ์•Š์•˜๋Š”๋ฐ ์˜คํžˆ๋ ค ์ข‹์•„!..

 

์ด๋ฒˆ ๋ฒ„๊ทธ๋Š” ์ƒˆ๋กœ๊ณ ์นจ ํ–ˆ์„ ๋•Œ ํ•˜ํŠธ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๋Š” ๋ฒ„๊ทธ์˜€๋‹ค.

๋ถ„๋ช… ์ด์ „์—๋Š” ๋˜์—ˆ๋˜ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•œ๋ฐ ๊ทธ ์‚ฌ์ด ์ˆ˜์ •์ด ๋˜๋ฉด์„œ ๋ญ”๊ฐ€ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธด ๋“ฏ.. ๐Ÿค”

 

 

์›์ธ ํŒŒ์•…

myProjects ์ปฌ๋ ‰์…˜์— ํ˜„์žฌ ํ”„๋กœ์ ํŠธ id ๊ฐ’์ด ํ™•์ธ๋˜์–ด์•ผ๋งŒ ํ•˜ํŠธ๋ฅผ ์ฑ„์šฐ๋Š” isLike๊ฐ€ ํŒ๋‹จ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ,

์ƒˆ๋กœ๊ณ ์นจ ํ–ˆ์„ ๋•Œ useQuery์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์‹œ๊ฐ„์ด ์žˆ์–ด์„œ ์ฒ˜์Œ์— undefined๋กœ ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ๋ฒ„๋ฆฌ๋Š” ๊ฒŒ ๋ฌธ์ œ์ธ ๋“ฏํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ณ  ํ•˜ํŠธ๊ฐ€ ํ’€๋ฆฌ๋‹ˆ๊นŒ ๋‹ค์‹œ ๋ˆ„๋ฅด๋ฉด ์ˆซ์ž๊ฐ€ 1์”ฉ ๋Š˜์–ด๋‚˜๋Š”.. ์ด์ƒํ•œ ๋ฒ„๊ทธ.. 

 

๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด true๋กœ myProjects ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Œ์ด ํ™•์ธ๋˜์–ด๋„ isLike๋Š” ๊ณ„์† undefined์˜€๋‹ค.

 

 

ํ•ด๊ฒฐ

๊ทธ๋ž˜์„œ ์ผ๋‹จ ์ฝ”๋“œ์ƒ์œผ๋กœ useEffect๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ผ๋‹จ ํ•ด๊ฒฐํ–ˆ์œผ๋‚˜,

 // ์ƒˆ๋กœ๊ณ ์นจ ์‹œ myProjects๊ฐ€ ๋Šฆ๊ฒŒ ๋ถˆ๋Ÿฌ์™€์ ธ์„œ ์ถ”๊ฐ€ํ•œ useEffect
  useEffect(() => {
    setIsLike(myProjects?.likedProjects?.includes(pid));
  }, [myProjects?.likedProjects]);

์ด ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ useQuery์™€ useMutation์ด ์ด 4๋ฒˆ ์“ฐ์ด๊ณ  ์žˆ๋Š”๋ฐ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ.. useQueries๋‚˜ ์ด๋Ÿฐ ๊ฑฐ๋กœ ์ค„์—ฌ๋ณผ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ??
ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ํ•จ๋ถ€๋กœ ๊ฑด๋“œ๋ฆด ์ˆ˜๋Š” ์—†๊ฒ ์ง€๋งŒ.. ๐Ÿฅบ

์ž˜ ๋“ค์—ฌ๋‹ค๋ณธ ์  ์—†๋Š” ๋ถ€๋ถ„์ด๋ผ ์ข€ ๋” ์ฝ”๋“œ ํŒŒ์•…์ด ํ•„์š”ํ•˜๊ธฐ๋„ ํ•˜๊ณ ...

 

๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๊ณต๋ถ€๊ฐ€ ๋” ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ! ๐Ÿ˜‡

์›Œ๋‚™ ๊ธฐ๋Šฅ์ด ๋งŽ๋‹ค ๋ณด๋‹ˆ ์•Œ์•„๋ด์•ผ ํ•  ๋ถ€๋ถ„์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค.

728x90