我想用一个可选的路径参数声明一个路径,因此当我把它添加到页面做一些额外的事情(例如填充一些数据):
http://localhost/app/path/to/page <=渲染页面
http://localhost/app/path/to/page/pathParam <=渲染页面
一些数据根据pathParam
在我的react路由器中,我有以下路径,为了支持这两个选项(这是一个简化的例子):
<Router history={history}>
<Route path="/path" component={IndexPage}>
<Route path="to/page" component={MyPage}/>
<Route path="to/page/:pathParam" component={MyPage}/>
</Route>
</Router>
我的问题是,我们可以在一条路线上申报吗?如果我只添加第二行,那么不带参数的路由就找不到。
编辑# 1:
这里提到的关于以下语法的解决方案不适合我,这是一个正确的吗?它在文档中存在吗?
<Route path="/product/:productName/?:urlID?" handler={SomeHandler} />
我的react-router版本是:1.0.3
对于搜索后到达这里的任何React Router v4用户,<Route>中的可选参数用?后缀。
以下是相关文件:
https://reacttraining.com/react-router/web/api/Route/path-string
路径:字符串
path-to-regexp能够理解的任何有效URL路径。
<Route path="/users/:id" component={User}/>
https://www.npmjs.com/package/path-to-regexp#optional
可选
参数可以用问号(?)作为后缀,使参数可选。这也将使前缀成为可选的。
站点的分页部分的简单示例,可以使用或不使用页码访问。
<Route path="/section/:page?" component={Section} />
既然你提到了你的react-router版本为1.0.3,你可以在之前的答案中找到你的解决方案。
然而,从React Router v6中,这个选项已经被删除了。在这里
因此,React Router v6如下:
<Route path='/page/:friendlyName/:sort?' element={<Page/>} />
将由:
<Route path='/page/:friendlyName/:sort' element={<Page/>} />
<Route path='/page/:friendlyName/' element={<Page/>} />
或者你也可以用:
<Route path="/page/:friendlyName">
<Route path=":sort" element={<Page />} />
<Route path="" element={<Page />} />
</Route>