【发布时间】:2018-03-13 22:58:32
【问题描述】:
我已经为此苦苦挣扎了几天,并希望有一种优雅的方式来处理没有数据的动态 URL。
我有以下路线:
const router = new VueRouter({
routes: [
{path: '/product/:slug', component: Product},
{path: '/404', component: PageNotFound, alias: '*'}
]
});
在Product 组件中,我有一个产品对象,并根据slug 变量加载要显示的产品。
我遇到的问题是当 URL 是产品数据集中不存在的 slug 时。我想加载 PageNotFound 组件,而不更新 URL。
这可能吗?在整个应用程序中拥有一致的 404 页面会很好,而且我不必在产品表中重复使用 v-if 对我也有好处。
我最接近它的是:
if(!product) {
this.$router.replace({path: '/404', query: {product: this.$route.params.slug}});
}
但是,这会更新实际的 URL,这不是很好的用户体验。
有什么线索吗?
【问题讨论】:
标签: javascript vue.js vuejs2 vue-router