๐์ค๋ ๋ฐฐ์ด ๊ฒ
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์์ ์ด๋ค ๊ฒ๋ค์ ๊ณ ๋ คํด์ผํ๋์ง ๋ ๋ฐฐ์๊ฐ๊ณ ์๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋งํผ ํธ๋ฌ๋ธ ์ํ ๋ ๋ง์ด ๊ฒช๊ณ ์๋๋ฐ ์ด๋ฒ์๋ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ด ๋ฐ๋น ๋ ๋ฌธ์ํ๋ฅผ ๋์น์ง ์์ผ๋ ค๊ณ ํ๋ค! ์ ์ ๋๊ฒ ์์ฑํ์ง ์๊ณ ๋ ๊ฒ ๊ทธ๋๋ก ์์ฑํ๊ณ ์์ง๋ง ๋์ค์ ๋ค์ ์ ๋ฆฌํ๋ฉด์ ํ๋์ฉ ๋ ์์ธํ๊ฒ ํฌ์คํ ํด๋ณด๊ณ ์ถ๋ค.

'์ผ์ > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2023.07.13[window.history.scrollRestoration] (0) | 2023.07.13 |
---|---|
2023.06.26[nextjs - setState ๊ฒฝ๊ณ ] (0) | 2023.06.28 |
2023.06.04[nextjs - image type error] (2) | 2023.06.04 |
2023.06.02[nextjs] (0) | 2023.06.02 |
2023.06.01 [color-thief-react] (0) | 2023.06.01 |
๐์ค๋ ๋ฐฐ์ด ๊ฒ
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์์ ์ด๋ค ๊ฒ๋ค์ ๊ณ ๋ คํด์ผํ๋์ง ๋ ๋ฐฐ์๊ฐ๊ณ ์๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋งํผ ํธ๋ฌ๋ธ ์ํ ๋ ๋ง์ด ๊ฒช๊ณ ์๋๋ฐ ์ด๋ฒ์๋ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ด ๋ฐ๋น ๋ ๋ฌธ์ํ๋ฅผ ๋์น์ง ์์ผ๋ ค๊ณ ํ๋ค! ์ ์ ๋๊ฒ ์์ฑํ์ง ์๊ณ ๋ ๊ฒ ๊ทธ๋๋ก ์์ฑํ๊ณ ์์ง๋ง ๋์ค์ ๋ค์ ์ ๋ฆฌํ๋ฉด์ ํ๋์ฉ ๋ ์์ธํ๊ฒ ํฌ์คํ ํด๋ณด๊ณ ์ถ๋ค.

'์ผ์ > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2023.07.13[window.history.scrollRestoration] (0) | 2023.07.13 |
---|---|
2023.06.26[nextjs - setState ๊ฒฝ๊ณ ] (0) | 2023.06.28 |
2023.06.04[nextjs - image type error] (2) | 2023.06.04 |
2023.06.02[nextjs] (0) | 2023.06.02 |
2023.06.01 [color-thief-react] (0) | 2023.06.01 |