可能是一个愚蠢的问题,特别是因为我不确定我是使用VueJS还是VueJS 2.0,但是我正在尝试使简单的路由工作可以在其中选择参数/ URL路径。
例如http://127.0.0.1/search/ *****
这是我的main.js
import Vue from 'vue'
import App from './components/App'
import VueRouter from 'vue-router'
const routes = [
{ path: '/', name: 'Home', component: App },
{ path: 'search/:id', name: 'Search', component: App }
];
const router = new VueRouter({ mode: 'history', routes: routes });
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
render: h => h(App)
})
在我的App.component上,我试图获取:id
created: function() {
//this.filterTutorials();
this.searchTerm = this.$route.query.id;
if (this.searchTerm == null) {
this.searchTerm = this.$route.params.id;
}
console.log(this.searchTerm)
}
更新 应用和搜索是相同的组件,但我没有将它们分开(同一目录)
新的main.js。它甚至没有调用搜索页面
import Vue from 'vue'
import App from './components/App'
import VueRouter from 'vue-router'
const routes = [
{ path: '/', name: 'Home', component: App },
{ path: '/search/:id', name: 'Search', component: () => import(/* webpackChunkName: "search" */ './components/Search.vue'), props: true }
];
const router = new VueRouter({ mode: 'history', routes: routes });
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
render: h => h(App)
})
我还更新了Webpacks
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
vue: 'vue/dist/vue.js'
}
},
答案 0 :(得分:1)
在您的情况下,App
是在路由解析之前静态创建的,因此created
生命周期挂钩将在路由参数存在之前对其进行检查(即,它将是undefined
)。我注意到/search
和/
都指向App
,但是您可能要使用Search
之类的组件名称。
您可以动态导入Search
:
const routes = [
{
path: '/search/:id',
name: 'Search',
component: () => import(/* webpackChunkName: "search" */ './views/Search.vue')
}
]
或者您也可以使用VueRouter的props: true
在导航中自动设置Search
的{{1}}道具,而无需检查id
中的路线参数。
created()