App.vue에서 사용되는 코드들 추가 설명을 할게요
<template>
<div id="app">
<div id="nav">
<router-link :to="{ name: 'TheLotto'}">TheLotto</router-link>
</div>
<router-view/>
</div>
</template>
<style>
//....
</style>
index.js
파일에 정의된 경로에 등록된 컴포넌트와 매핑된다.
router-link
는 클릭 이벤트를 차단하여 브라우저가 페이지를 다시 로드하지 않도록 한다.route와 매칭되는 컴포넌트가 렌더링 되는 자리
router-link
와 연결되어 있습니다.특정 작업 이후에 다른 컴포넌트를 보여줄 수 있다!
vue 인스턴스 내부에서 라우터 인스턴스에 $router
로 엑세스할 수 있다. -> this.$router.push
를 사용해보자!
<template>
<div>
<p>당신은 결과를 볼 수 없습니다ㅎㅎ;</p>
</div>
</template>
<script>
export default {
name: 'Result',
}
</script>
<style>
</style>
TheLotto.vue
//...
methods: {
getLuckyNums() {
const numbers = _.range(1,46)
this.sampleNums = _.sampleSize(numbers,6)
this.selectedLuckyNums = _.sortBy(this.sampleNums)
this.$router.push({ name: 'Result' })
},
}
const routes = [
{
path: '/lotto',
name: 'TheLotto',
component: TheLotto
},
{
path: '/result',
name: 'Result',
component: Result
}
]
픽 마이 로또 넘버 클릭했더니....
결과
지정한 view 컴포넌트로 넘어가는 것을 확인할 수 있습니다..
(추가적으로 데이터를 함께 넘겨주기 위해선 새로운 방법이 필요! - 난중에 다시 공부할 예정입니다.)
:
으로 시작하여 동적으로 넘어가는 데이터가 담길 변수의 이름을 적어주면 된다.$route.params
를 통해 접근할 수 있다.6개 숫자 로또가 아니라 사용자 지정 개수 로또를 만들어 보자!
const routes = [
...
{
path: '/lotto/:lottoNum',
name: 'TheLotto',
component: TheLotto
},
]
<template>
<div>
<h2>로또번호 추천</h2>
<button @click="getLuckyNums">Pick My Lotto Numbers</button>
<h2>로또 번호 {{ $route.params.lottoNum }}개 추천</h2>
<p>오늘의 추천 로또 번호</p>
<p>{{ selectedLuckyNums }}</p>
</div>
</template>
<script>
import _ from 'lodash'
export default {
name: 'TheLotto',
data: function() {
return {
sampleNums: [],
selectedLuckyNums: [],
}
},
methods: {
getLuckyNums() {
const numbers = _.range(1,46)
this.sampleNums = _.sampleSize(numbers, this.$route.params.lottoNum)
//this.sampleNums = _.sampleSize(numbers,6)
this.selectedLuckyNums = _.sortBy(this.sampleNums)
// this.$router.push({ name: 'Result' })
},
}
}
</script>
<style>
</style>