๐Ÿ“• Language/Vue

[vuejs] route๋ฅผ ํ†ตํ•ด ๋ฐ›์€ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด param๊ฐ’, [Object object] ๋œจ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

a n u e 2023. 3. 31. 13:28

 

Router๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™”๋ฉด ์ „ํ™˜์„ ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์ฃผ๋Š” ๊ฒฝ์šฐ

๋ณดํ†ต ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

const pageNm = 'FileName';
const param = {};

const router = useRouter()
router.push({ name: pageNm, params: param });
})

 

๊ทธ๋ฆฌ๊ณ  ๋ฐ›์•„์˜ค๋Š” ์ชฝ์€ route๋ฅผ ์ด์šฉํ•˜์—ฌ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ, param์—์„œ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋ฅผ ๋ณด๋‚ด๋‹ˆ ๋ฐ›๋Š” ์ชฝ์—์„œ ์ œ๋Œ€๋กœ ๊บผ๋‚ด์˜ค์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ฉด

 

  • ๋ฐ์ดํ„ฐ ์†ก์‹  ๋ถ€๋ถ„
const fileName = 'Page';
const param = {
        a : 'A',
        b : 'B',
        bundleData: {
          c : 'C',
          d : 'D',
        },
      };
      router.push({ name: fileName, params: param });

 

  • ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ๋ถ€๋ถ„
console.log(route.params.bundleData); //[Object object]

๋ฐ›์•„์˜ค๋Š” ์ชฝ์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ, [Object object] ๋ผ๋Š” ํƒ€์ž…๋งŒ์„ ๋ช…์‹œํ•ด์ค„ ๋ฟ, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค์ง„ ๋ชปํ–ˆ๋‹ค.

 


 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด

๋ณด๋‚ผ ๋•Œ ๊ฐ Object์— JSON.Stringify๋กœ ํ•œ๋ฒˆ ๋ฌถ์–ด์„œ ๋ณด๋‚ธ ํ›„,

๋ฐ›์„ ๋•Œ ๊ฐ Object์— JSON.parse ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค.

 

์ค‘์š”ํ•œ ๊ฒƒ์€ ์ € route.param ์ „์ฒด์— ๋Œ€ํ•œ JSON.parse ์ฒ˜๋ฆฌ๊ฐ€ ์•„๋‹Œ, ๊ฐœ๋ณ„ Object์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์ด๋‹ค.

 


๋ณ€๊ฒฝ ํ›„ ์†Œ์Šค

  • ๋ฐ์ดํ„ฐ ์†ก์‹  ๋ถ€๋ถ„
const fileName = 'Page';
const param = {
        a : 'A',
        b : 'B',
        bundleData: JSON.stringify({
          c : 'C',
          d : 'D',
        }),
      };
      router.push({ name: fileName, params: param });

 

  •  ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ๋ถ€๋ถ„
 route.params.bundleData = JSON.parse(route.params.bundleData);