Fri*_*x G 28 reactjs react-router
我使用React 15.0.2和React Router 2.4.0.我想把多个参数传递给我的路线,我不知道如何以最好的方式做到这一点:
<Route name="User" path="/user" component={UserPage}>
<Route name="addTaskModal" path="/user/manage:id" component={ManageTaskPage} />
</Route>
Run Code Online (Sandbox Code Playgroud)
想要的是:
<Route name="User" path="/user" component={UserPage}>
<Route name="addTaskModal" path="/user/manage:id:type" component={ManageTaskPage} />
</Route>
Run Code Online (Sandbox Code Playgroud)
Tom*_*dus 62
正如@ alexander-t所说:
path="/user/manage/:id/:type"
Run Code Online (Sandbox Code Playgroud)
如果你想让它们可选:
path="/user/manage(/:id)(/:type)"
Run Code Online (Sandbox Code Playgroud)
React Router v4与v1-v3不同,并且文档中未明确定义可选路径参数.
相反,您被指示定义path-to-regexp理解的路径参数.这样可以更灵活地定义路径,例如重复模式,通配符等.因此,要将参数定义为可选参数,请添加尾随问号(?).
因此,要定义可选参数,您可以执行以下操作:
path="/user/manage/:pathParam1?/:pathParam2?"
Run Code Online (Sandbox Code Playgroud)
即
<Route path="/user/manage/:pathParam1?/:pathParam2?" component={MyPage} />
Run Code Online (Sandbox Code Playgroud)
而V4中的强制参数仍然相同:
path="/user/manage/:id/:type"
Run Code Online (Sandbox Code Playgroud)
要访问PathParam的值,您可以执行以下操作:
this.props.match.params.pathParam1
Run Code Online (Sandbox Code Playgroud)
Bik*_*ath 10
<Route path="/:category/:id" exact component={ItemDetails} />
Run Code Online (Sandbox Code Playgroud)
在组件中,使用useParamsfrom react-router-dom,
import { useParams } from 'react-router-dom'
export default function ItemDetails(props) {
const {id, category} = useParams();
return (
<div className="">
{id}
{category}
</div>
)
Run Code Online (Sandbox Code Playgroud)
这是不使用和使用路由库的解决方案props。
尝试这个
<Route name="User" path="/user" component={UserPage}>
<Route name="addTaskModal" path="/user/manage/:id/:type" component={ManageTaskPage} />
</Route>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27435 次 |
| 最近记录: |