相同组件,但Vue中的Url路径不同

问题描述 投票:0回答:1

我希望同一组件SingleProduct具有不同的url(消费者和卖方),以下代码可以很好地工作:

const routes = [
  {
    path: "/:name",
    name: "SingleProductSeller",
    component: SingleProduct
  },
  {
    path: "/seller/:name",
    name: "SingleProductConsumer",
    component: SingleProduct,
  },
]

不是分成两个部分,还有其他方法吗?例如,是否可以使用以下参数以及如何使它们成为别名?

  {
    path: "/:name",
    name: "SingleProduct",
    component: SingleProduct,
    alias: "/seller/:name/",
    props: true,
  },

谢谢。

vue.js url path routes vue-router
1个回答
1
投票

您可以使用vue-routeralias功能。在docs中有很好的解释。

但是,由于要使用动态路径片段,因此应尽可能避免这种情况,并且从概念上讲这是两条不同的路线,因此即使它们指向相同的组件,也应是不同的路线。您将遇到书签问题-即使它们只是别名,页面也不会转换到相同的路径

如果确实要避免DRY,则应使用基于函数的简单抽象,而不要依赖别名:

function makeSingleProductRoute(name, path) {
    return {
        name, path,
        component: SingleProduct
        // Reusable guards if required.
    };
}


const router = new VueRouter({
    routes: [
        makeSingleProductRoute("SingleProductConsumer", "/seller/:name"),
        makeSingleProductRoute("SingleProductSeller", "/:name")
    ]
});
© www.soinside.com 2019 - 2024. All rights reserved.