vue router로 데이터를 전달해봅시다.
vue router로 데이터를 전달하는 방법은 2가지가 있습니다.
{name: 'Query', query: {name: 'cat', age: 3}}
{name: 'Params', params: {name: 'dog', age:4}}
<template>
<div>
main
<ul>
<li @click="clickList">
Query 프로그래밍 방식
</li>
<router-link :to="{name: 'Query', query: {name: 'cat', age: 3}}">
Query 선언적 방식
</router-link>
<li @click="clickParams">
params
</li>
<router-link :to="{name: 'Params', params: {name: 'dog', age:4}}">
params 선언적 방식
</router-link>
</ul>
</div>
</template>
<script>
export default {
name: 'Main',
methods: {
clickList () {
this.$router.push({name: 'Query', query: {name: 'cat', age: 3}})
},
clickParams () {
this.$router.push({name: 'Params', params: {name: 'dog', age:4}})
}
}
}
</script>
크게 수정할 부분은 없습니다.
다만, params로 전달하는 경우 props:true 로 설정하면 데이터가 props에도 전달됩니다.
import VueRouter from 'vue-router'
import vue from 'vue'
vue.use(VueRouter)
import Main from '@/views/Main.vue'
import Query from '@/views/Query.vue'
import Params from '@/views/Params.vue'
const router = new VueRouter({
mode: 'hash',
routes: [
{
path: '/',
component: Main,
name: 'Main'
},
{
path: '/query',
component: Query,
name: 'Query'
},
{
path: '/params',
component: Params,
name: 'Params',
// true로 설정하면 데이터를 props로도 받습니다.
props: true
}
]
})
export { router }
<template>
<div>
<h1>Query</h1>
<h2>name: {{ $route.query.name }}</h2>
<h2>age: {{ $route.query.age }}</h2>
</div>
</template>
<script>
export default {
name: 'Query',
}
</script>
<template>
<div>
<h1>Params</h1>
<h2>params로 받은 데이터</h2>
<h2>name: {{ $route.params.name }}</h2>
<h2>age: {{ $route.params.age }}</h2>
<h2>props로 받은 데이터</h2>
<h2>name: {{ name }}</h2>
<h2>age: {{ age }}</h2>
</div>
</template>
<script>
export default {
name: 'Params',
props: {
name: {
type: String,
default : ''
},
age: {
type: Number,
default: 0
}
}
}
</script>
URL의 일부분으로 데이터를 전달하기 위해 사용됩니다.
시작 - ?
다음 질의 - &
데이터 - 변수=값
파이어 폭스 브라우저로 구글에서 날씨를 검색했을때 쿼리 스트링
https://www.google.com/search?client=firefox-b-d&q=%EB%82%A0%EC%94%A8
감사합니당 vue 공부하는데 엄청 도움이 되었어요!