๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ‘“Vue

[Vue]Pass Object as Router Params, ๋ผ์šฐํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์˜ค๋ธŒ์ ํŠธ ๋„˜๊ธฐ๊ธฐ

by ๋นˆ์„ฑ_ 2022. 4. 29.
๋ฐ˜์‘ํ˜•

Intro

Vue์—์„œ๋Š” ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด Vue Router๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Router๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋‹จ์ˆœํžˆ ํŽ˜์ด์ง€๋งŒ์„ ์˜ฎ๊ธฐ๋Š” ๊ฒŒ ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์˜ฎ๊ธฐ๊ณ  ์‹ถ์€ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋ฅผ ์œ„ํ•ด query์™€ params๋ฅผ Vue Router๋Š” ์ค€๋น„ํ•ด ๋‘์—ˆ์ฃ . ํ•˜์ง€๋งŒ ์š”๊ฒŒ ์š”๊ฒŒ ๋ง˜๋Œ€๋กœ ์•ˆ ๋  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ Object ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ณ  ์‹ถ์„ ๋•Œ ๋ง์ด์ฃ .

Result

// PUSH
const router = useRouter()
router.push({
  name: 'xxx',
  params: {
    'A': JSON.stringify({
      stringify: 'JSON.stringfy',
      GOOD: 'So GOOD!!!'
    })
  }
})

 

// RECEIVE
const route = useRoute()
const param = JSON.parse(route.params.A)

// param = { stringify: 'JSON.stringfy', GOOD: 'So GOOD!!!' }

 

ํ•ด๋‹ต์€ JSON.stringfy์™€ JSON.parse์ž…๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค๋ฉด ์œ„์˜ ๋ชจ์Šต์œผ๋กœ ์ถฉ๋ถ„ํ•  ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Array์— ๋ณต์ˆ˜์˜ Object๋ฅผ ๋‹ด์•„ ๋ณด๋‚ธ๋‹ค๋ฉด ๊ฐ๊ฐ์˜ Object๋“ค์„ JSON.stringfy ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ฐ›์„ ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ๊ฐ์˜ Object์— JSON.parse ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

์ €๋Š” Vue3๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์—…ํ–ˆ์ง€๋งŒ ํ˜น์‹œ Vue2๋ฅผ ์“ฐ์‹ ๋‹ค๋ฉด $route๋ฅผ ํ™œ์šฉํ•˜์‹œ๋ฉด ๋‚˜๋จธ์ง€๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

 

์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ๋Š” ์ด๊ณณ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜์‹ญ๋‹ˆ๋‹ค.

์ฃผ์ €๋ฆฌ์ฃผ์ €๋ฆฌ

ํ•ด๋†“๊ณ  ๋ณด๋‹ˆ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ๊ฑด๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊ตฌ๊ธ€์— ์ž๋ฃŒ๊ฐ€ ๊ฒ€์ƒ‰๋˜์ง€ ์•Š์•„ ๊ณ ์ƒํ–ˆ๋„ค์š”.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€