์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[React-query] refetch ์˜ต์…˜๊ณผ ์‚ฌ์šฉ๋ฒ• ์ด ์ •๋ฆฌ

martinooo 2024. 6. 20. 18:00

 

 

 

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œ


react-query๋Š” React์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์บ์‹ฑํ•˜๊ณ , ๋™๊ธฐํ™”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํ›„ํฌ์™€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ™œ์šฉ์€ React์˜ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

react-query ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ

https://cometruedream.tistory.com/130

 

React-query ์ƒํƒœ ๊ด€๋ฆฌ

๐Ÿ“–React-query ์•Œ๊ธฐ์ „์— JSX๋ž€?JSX(javascript XML)๋Š” javascript์— XML์„ ์ถ”๊ฐ€ํ•œ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ด๋‹ค.JSX๋Š” React์—์„œ ์‚ฌ์šฉ๋˜๋Š”๋ฐ ๊ณต์‹์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.JSX๋Š” javascript ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ๋ฐ”๋ฒจ๋“ฑ๋“ฑ์„

cometruedream.tistory.com

 

react-query ๋ฐ์ดํ„ฐ ํ”„๋ฆฌํŽ˜์นญ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ

https://cometruedream.tistory.com/251

 

[React-query] ๋ฐ์ดํ„ฐ ํ”„๋ฆฌํŽ˜์นญ ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œํ’€์Šคํƒ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์„ ์šฐ์„ ์œผ๋กœ ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์šฐ์„ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ ค ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์–ผ๋งˆ ์ „์— ์ฝ์€ ์ฑ…์—์„œ"๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ˆ˜๊ณ ๋กญ๋‹ค๋ฉด ์‚ฌ์šฉํ•˜

cometruedream.tistory.com

 

 

 

๐Ÿคท‍โ™‚๏ธ refetch๋ž€ ๋ฌด์—‡์ธ๊ฐ€?


refetch๋Š” ์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ stale ์ƒํƒœ์ธ ๊ฒฝ์šฐ, ์ฆ‰ ๋งŒ๋ฃŒ๋œ ๋ฐ์ดํ„ฐ(stale ์ƒํƒœ)๊ฐ€ refetch ์˜ต์…˜์˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋ฉด, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์—์„œ ๋‹ค์‹œ ๊ฐ€์ ธ์™€ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด

๐Ÿ’ก ๋งŒ๋ฃŒ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

 

์ค‘์š”ํ•œ refetch ์˜ต์…˜

  • refetchOnMount
    • ์ด ์˜ต์…˜์€ boolean ํƒ€์ž…์„ ๊ฐ€์ง€๋ฉฐ, ํ™”๋ฉด์ด ๋งˆ์šดํŠธ(React ๋ผ์ดํ”„์‚ฌ์ดํด)๋  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. false๋กœ ์„ค์ •ํ•˜๋ฉด ํ™”๋ฉด์ด ๋งˆ์šดํŠธ ๋  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, true๋กœ ์„ค์ •ํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ ๋  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์™€ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • refetchOnWindowFocus
    • ์ด ์˜ต์…˜์€ boolean ํƒ€์ž…์„ ๊ฐ€์ง€๋ฉฐ, ํ™”๋ฉด์ด focus ๋  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. false๋กœ ์„ค์ •ํ•˜๋ฉด ์ฐฝ์ด focus ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, true๋กœ ์„ค์ •ํ•˜๋ฉด ํ™”๋ฉด์ด ๋ Œ๋”๋ง ๋˜๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ํƒญ์ด๋‚˜ ํ™”๋ฉด์„ ์ „ํ™˜ํ•  ๋•Œ focus ๋˜๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: true ์„ค์ • ์‹œ ํƒญ์ด๋‚˜ ํ™”๋ฉด ์ „ํ™˜์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋‹นํ™ฉํ•  ์ˆ˜ ์žˆ์Œ).
  • refetchOnReconnect
    • ์ด ์˜ต์…˜์€ boolean ํƒ€์ž…์„ ๊ฐ€์ง€๋ฉฐ, ๋„คํŠธ์›Œํฌ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. false๋กœ ์„ค์ •ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์žฌ์—ฐ๊ฒฐ์ด ๋ฐœ์ƒํ•ด๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, true๋กœ ์„ค์ •ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์žฌ์—ฐ๊ฒฐ์„ ๊ฐ์ง€ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • refetchInterval
    • ์ด ์˜ต์…˜์€ staleTime, cacheTime๊ณผ ๋™์ผํ•˜๊ฒŒ ์ •์ˆ˜ ํƒ€์ž…์„ ๊ฐ€์ง€๋ฉฐ, refetchInterval: 60000์€ 1๋ถ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜๊ณผ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด 4๊ฐœ์˜ refetch ์˜ต์…˜์ด ์žˆ์œผ๋ฉฐ, refetchOnMount, refetchOnWindowFocus, refetchOnReconnect ์˜ต์…˜์˜ ์ดˆ๊ธฐ๊ฐ’์€ true์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค์— ๋งž๊ฒŒ ์žฌ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿคท‍โ™‚๏ธ refetch๋ž€ ๋ฌด์—‡์ธ๊ฐ€?


1. useQuery ์˜ˆ์ œ

const { data = fallback } = useQuery([queryKeys.treatments], getTreatments, {
  staleTime: 6000, // 1๋ถ„
  cacheTime: 30000, // 5๋ถ„ (cacheTime์˜ ๊ธฐ๋ณธ๊ฐ’์€ 5๋ถ„์ด๋ฉฐ, cacheTime์€ staleTime๋ณด๋‹ค ์งง์•„์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค)
  refetchOnMount: false,
  refetchOnWindowFocus: false,
  refetchOnReconnect: false,
});

 

์œ„์˜ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ ํ™”๋ฉด ๋ Œ๋”๋ง ์‹œ, ํ™”๋ฉด์ด ํฌ์ปค์Šค ๋  ๋•Œ, ๋„คํŠธ์›Œํฌ๊ฐ€ ์žฌ์—ฐ๊ฒฐ๋  ๊ฒฝ์šฐ์— ์˜ต์…˜์„ false๋กœ ์„ค์ •ํ•˜์˜€์œผ๋ฉฐ, staleTime์€ 1๋ถ„, cacheTime์€ 5๋ถ„์œผ๋กœ ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

์ฃผ์˜ํ•  ์ !

cacheTime์€ staleTime๋ณด๋‹ค ์งง๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

๋ณด์ถฉ ์„ค๋ช…!

staleTime์€ ๋งŒ๋ฃŒ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. cacheTime์ด staleTime๋ณด๋‹ค ์งง์œผ๋ฉด, cacheTime์ด ๋งŒ๋ฃŒ๋˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  stale ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€์„ฑ์„ ์žƒ์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ผ๋ž€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ์ „์—ญ refetch ์˜ˆ์ œ

const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 600000, // 10๋ถ„
      cacheTime: 900000, // 15๋ถ„
      refetchOnMount: false,
      refetchOnReconnect: false,
      refetchOnWindowFocus: false,
    },
  },
});

 

useQuery์—๋งŒ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, QueryClient์—์„œ ์ „์—ญ์œผ๋กœ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

refetch ์˜ต์…˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

์ „์—ญ์œผ๋กœ ์„ค์ •ํ•œ ์˜ต์…˜์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋ ค๋ฉด ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๊ณ ์ž ํ•˜๋Š” useQuery ๋ถ€๋ถ„์—์„œ ์œ„์˜ useQuery ์˜ˆ์ œ์ฒ˜๋Ÿผ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

ํด๋ง ๊ธฐ๋ฒ•์„ ์ด์šฉํ•œ ์ž๋™ refetch

 

ํด๋ง ๊ธฐ๋ฒ•์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก ๋ฆฌ์–ผํƒ€์ž„ ์›น์„ ์œ„ํ•œ ๊ธฐ๋ฒ•์œผ๋กœ, ์ผ์ •ํ•œ ์ฃผ๊ธฐ๋กœ ์„œ๋ฒ„์™€ ์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ์‹์„ ํด๋ง ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

์œ„์˜ ์˜ˆ์ œ์—์„œ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ฉด ์ผ์ •ํ•œ ์ฃผ๊ธฐ๋กœ refetch๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

refetchInterval: 60000 // 1๋ถ„๋งˆ๋‹ค ์ž๋™์œผ๋กœ refetch

 

๐Ÿคท‍โ™‚๏ธ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉด์„œ..


react-query๋ฅผ ํ™œ์šฉํ•˜๋ฉด react์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ์ข‹์€ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, refetch์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ฉด์„œ react-query๋ฅผ ๋”์šฑ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

 


 

์žฌ๋ฐŒ๋Š” ์˜ค๋Š˜์˜ ๋ ๋ณ„ ์šด์„ธ ๋ณด๊ณ  ๊ฐ€์„ธ์š”! 

 

 

https://cometruedream.tistory.com/247

 

[React] Tailwind ํ•œ์ค„, ๋‘์ค„, ์„ธ์ค„ ํšจ๊ณผ className ์ปค์Šคํ…€

๐Ÿคท‍โ™‚๏ธ Tailwind ํ•œ์ค„, ๋‘์ค„, ์„ธ์ค„ ํšจ๊ณผํ”„๋กœ์ ํŠธ ์ง„ํ–‰์ค‘ ๋ฐฐ๋„ˆ ๋งํฌ์— URL ๊ธธ์ด๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์„œ 3์ค„ ํšจ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. React + Tailwind CSS ์…‹ํŒ…๋œ ํ”„๋กœ์ ํŠธ ์—ฌ์„œ CSS ํŒŒ์ผ & style ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/243

 

NestJS Lifecycle (์ƒ๋ช…์ฃผ๊ธฐ) ๊ฐœ๋…

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œ Nest JS ๊ฐœ๋…?Nest JS๋Š” Node JS ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ƒ๋‹นํžˆ ์˜ค๋žซ๋™์•ˆ Express ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ ์••๋„์ ์ธ ์ 

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/242

 

๋ฆฌ์•กํŠธ Vite Proxy ํ™œ์šฉํ•œ CORS ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œํ”„๋ก ํŠธ์—”๋“œ ๋ฒˆ๋“ค๋Ÿฌ ๊ฐœ๋…๊ณผ webpack vs vite ๋น„๊ต์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ๊ธ€์„ ๋ณด์‹œ๋ฉด ๋” ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค^^ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ฒˆ๋“ค๋Ÿฌ ๊ฐœ๋…๊ณผ webpack vs vite ๋น„๊ตhttps://comet

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/241

 

React ํด๋”๊ตฌ์กฐ FSD ๊ธฐ๋Šฅ ๋ถ„ํ™œ ์„ค๊ณ„ ์•„ํ‚คํ…์ฒ˜

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ํด๋” ๊ตฌ์กฐ, ์„ค๊ณ„์— ๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์–ด๋ ต๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— React FSD ํด๋”๊ตฌ์กฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•  ์˜ˆ์ •์ด๋ผ์„œ FSD ์•„ํ‚คํ…

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/244

 

์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” Prisma ๋ช…๋ น์–ด ์ •๋ฆฌ

๐Ÿคท‍โ™‚๏ธ Prisma ๋ช…๋ น์–ด ๋ณธ๋ก ์— ์•ž์„œ Prisma๋ž€?Nest JS ํ”„๋ ˆ์ž„์›Œํฌ์™€ Prisma ORM์„ ํ™œ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Prisma๋Š” Node JS ๊ธฐ๋ฐ˜์— ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ์ž˜๋˜๋ฉฐ Prisma + DB ์—ฐ๋™์œผ

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/250

 

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ํ™œ์šฉ๊ฐ€์น˜๊ฐ€ ์ข‹์€ ๋‚ด์žฅํ•จ์ˆ˜์™€ every(), some() ํ•จ์ˆ˜์˜ ๊ฐœ๋… ๋ฐ ํ™œ์šฉ๋ฒ•

๐Ÿคท‍โ™‚๏ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์žฅ ํ•จ์ˆ˜๋ž€?์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋ ค๋ฉด ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์ž˜ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.๋‚ด์žฅ ํ•จ์ˆ˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ ํ•จ์ˆ˜๋กœ, ํ˜ธ์ถœ๋งŒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต

cometruedream.tistory.com