[Next] _app.tsx์—์„œ url parmater ์‚ฌ์šฉ

์ƒํ™ฉ

next.js์—์„œ๋Š” SSR์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— url์— ์žˆ๋Š” query๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜๊ฐ€ ์—†๋‹ค.

 

ํ•ด๊ฒฐ 1

next page์—์„œ getServerSideProps ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด query๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

const Page: NextPage = ({ params }) => {

}

export async function getServerSideProps (context) {
  const req = context.req;

  const params = new URLSearchParams(req._parsedUrl.query);

  return { props: { params } };
}โ€‹

 

ํ•ด๊ฒฐ 2

ํ•ด๊ฒฐ 1์˜ ๋ฐฉ๋ฒ•์œผ๋กœ page ๋‚ด๋ถ€์—์„œ๋Š” url parameter๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ _app.tsx์™€ ๊ฐ™์ด next page ์ด์ „์˜ ์ปดํฌ๋„ŒํŠธ์—์„œ device๋ฅผ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

 

next ๊ณต์‹ ๋ฌธ์„œ ์— ๋‚˜์™€์žˆ๋“ฏ์ด _app.tsx์—์„œ๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ์˜ค๋กœ์ง€ getInitialProps๋งŒ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

import App from 'next/app';

function MyApp ({ Component, pageProps, params }) {

}

MyApp.getInitialProps = async (context) => {
  const { ctx } = context;
  const params = new URLSearchParams(ctx?.req._parsedUrl.query);

  const appProps = await App.getInitialProps(context);

  return { ...appProps, params };
};
 

 

 

๋ฐ˜์‘ํ˜•