The Vue Router loaded before the main Vue instance, but to load that Router, I supposed to have some information ready to then pass them as Property to this Route. In this example it's the currentTime from main Vue Instance to pass to Home screen.
Maybe keeping everything on $Store would fix it, but at the moment to project doesnt have Vuex implemented. I can't do it now.
Any suggestion?
main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './registerServiceWorker'
Vue.config.productionTip = false
new Vue({
data() {
return {
currentTime: 0
}
},
router,
created(){
console.log("Vue created")
},
mounted(){
console.log("Vue mounted")
this.currentTime = Date.now()
},
render: h => h(App)
}).$mount('#app')
/router/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'home',
component: Home,
props: {time: "I_WANT_MY_TIME_HERE"},
beforeEnter (to, from, next){
console.log("beforeRouteEnter on Home")
next()
}
},
{
path: '/about',
name: 'about',
component: () => import('../views/About.vue')
}
]
const router = new VueRouter({
routes
})
export default router
/components/Home.vue
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<h1>{{displayTime}}</h1>
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'home',
props: ['time'],
data() {
return {
displayTime: 0
}
},
mounted(){
console.log("mounted Home")
this.displayTime = this.time
},
components: {
HelloWorld
}
}
</script>