【发布时间】:2017-07-23 14:50:02
【问题描述】:
我正在尝试将我的网站从传统的网络应用程序方法迁移到基于反应的应用程序。在这个过程中,我遇到了一个与 url 相关的问题。在我的网站中,在服务器端,我使用 Url Rewrite 功能将 url 映射到正确的控制器。但我无法弄清楚如何在反应路由器中处理这个事情。我当前的反应路由器代码如下所示
<BrowserRouter>
<Route exact path="/" component={Home}/>
<Route path="/black-forest" component={Product}/>
<Route path="/cakes" component={ProductList}/>
</BrowserRouter>
我为构建原型而编写的这段代码。但理想情况下,有许多不同的 url 可以指向 ProductList 组件。同样有很多url可以指向Product组件。
例如,
以下 url 指向 ProductList 组件
- http://www.example.com/best-cakes-in-australia
- http://www.example.com/cake-delivery-in-india
- http://www.example.com/flowers-delivery-in-canada
总的来说,我有大约 10,000 个这样的 url,它们是使用服务器端 UrlRewrite 创建的,因此它们没有遵循特定的模式。这些 url 主要指向 ProductList 或 Product 组件。
如何在我的 react 路由器配置中为所有这些 url 创建路径?任何指针将不胜感激。
【问题讨论】:
-
这对你有用吗?你有一个路由,例如
<Route path="/product-list/:products" component={ProductList}/>,它处理http://www.example.com/product-list/best-cakes-in-australia之类的链接,你可以根据:products的值显示你需要的东西 -
如果用户想看到澳大利亚最好的蛋糕,在这种情况下用户会看到
http://www.example.com/product-list/best-cakes-in-australia而不是http://www.example.com/best-cakes-in-australia,对吗?不,这不起作用,因为它会创建新的 url,并且从 SEO 的角度来看,维护当前的 url 是至关重要的 -
好的,所以它对我来说似乎仍然有用......当您需要展示澳大利亚最好的蛋糕并从那里推断时,只需查找 params.products === 781。
-
@KyleRichardson 我真的不明白你的意思是什么?您能否提供更多详细信息?
-
好吧,我可能要问你几个问题。你说路线没有特定的模式。这是否意味着需要显示产品列表的 URL 不会在其 URL 中包含产品列表?如果它们都是
http://www.example.com/product-list/:parameter,那么在您的ProductList组件中,您可以使用this.props.params.product值并根据该param.product 值显示正确的数据。
标签: reactjs react-router react-router-v4