์ผ์ƒ/Today I Learned

2023.06.16[nextjs - query ]

YJzero 2023. 6. 17. 00:31

๐Ÿ“–์˜ค๋Š˜ ๋ฐฐ์šด  ๊ฒƒ

 

query undefined

ํŽ˜์ด์ง€์—์„œ router๋กœ query๋ฅผ ๋ฐ›์•„์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ํ•ด๋‹น query ๊ฐ’์ด ์‚ฌ๋ผ์ ธ์„œ undefined๊ฐ€ ๋˜์–ด ๋ฐ์ดํ„ฐ ํŒจ์น˜์— ์‹คํŒจํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์•„๋งˆ next router์—์„œ query ๊ฐ’์„ ์œ ์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ query ๊ฐ’์„ ๋ฐ›์•„์˜ค๊ธฐ๋„ ์ „์— ํŒจ์น˜ํ•ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜... ์›์ธ์€ ์ •ํ™•ํžˆ ๋ชฐ๋ผ์„œ ๋” ์ฐพ์•„๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

๋ฐ์ดํ„ฐ ํŒจ์น˜๋Š” csr๋กœ ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ssr๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค.

 

โ—์ฟผ๋ฆฌ ๊ฐ’์„ ssr๋กœ ๋ฐ›์•„์™€์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋˜๊ธฐ ์ „์— ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ•

export const getServerSideProps: GetServerSideProps = ({ query: { id } }) => {
  return {
    props: {
      id,
    },
  };
}

์œ„์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค! ๊ทธ๋Ÿฐ๋ฐ ์ด์™ธ์—๋„ props๋กœ ์•„๋ฌด๊ฒƒ๋„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ํ•ด๊ฒฐ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. props๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ๋˜๋Š”๊ฑด์ง€... ์ผ๋‹จ getServerSideProps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ query ๊ฐ’์„ ๋จผ์ € ๋ฐ›์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— props๋ฅผ ๋ฆฌํ„ดํ•˜์ง€ ์•Š์•„๋„ undefined๊ฐ€ ๋œจ๋Š” ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์˜ˆ์ƒ์ด ๋“ ๋‹ค. ์ž์„ธํ•œ ๊ฑด ๋” ๊ณต๋ถ€ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค!

 

 

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ์— ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉ ์ค‘์ด์–ด์„œ ์ตœ์ข…์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค.

โœ…์ตœ์ข…

export const getServerSideProps: GetServerSideProps = ({
  query: { groupId },
}) => {
  return Promise.resolve({
    props: {
      groupId: groupId as string,
    },
  });
};

GetServerSideProps๋Š” Promise๋ฅผ ๋ฆฌํ„ดํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€๊ฐ™์ด ๋ฆฌํ„ด๊ฐ’์„ Promise๋กœ ๊ฐ์‹ธ์ฃผ์–ด ํƒ€์ž…์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

 

 

 

 

๐Ÿ’ญ๋ฐฐ์šด ์ 

nextJS ํ• ๋งŒํ•œ๋ฐ?! ๋ผ๊ณ  ์ƒ๊ฐํ•  ๋•Œ๋งˆ๋‹ค ๊ธฐ๊ฐ€๋ง‰ํžˆ๊ฒŒ ๊ณ ๋‚œ๊ณผ ์‹œ๋ จ์ด ์ฐพ์•„์˜จ๋‹ค. 

์ž๋งŒํ•˜์ง€ ๋ง๋ผ๋Š” ํ•˜๋Š˜์˜ ๋œป์ธ๊ฐ€๋ณด๋‹ค..ใ…‹ใ…‹ใ…‹ใ…‹ ๋•๋ถ„์— nextJS์—์„œ ์–ด๋–ค ๊ฒƒ๋“ค์„ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š”์ง€ ๋” ๋ฐฐ์›Œ๊ฐ€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋งŒํผ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…๋„ ๋งŽ์ด ๊ฒช๊ณ  ์žˆ๋Š”๋ฐ ์ด๋ฒˆ์—๋„ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ๋ฐ”๋น ๋„ ๋ฌธ์„œํ™”๋ฅผ ๋†“์น˜์ง€ ์•Š์œผ๋ ค๊ณ  ํ•œ๋‹ค! ์ •์ œ๋˜๊ฒŒ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋‚  ๊ฒƒ ๊ทธ๋Œ€๋กœ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ฉด์„œ ํ•˜๋‚˜์”ฉ ๋” ์ž์„ธํ•˜๊ฒŒ ํฌ์ŠคํŒ…ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.

๊ฒช์˜€๋˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…๋“ค