Reactjs 反应路由器任意数量的路径参数
我正在尝试创建可以处理URL的路由,如 /结果/创建订单/OFR44159995010000/ 及 /结果/创建订单/OFR44159995010000/OFR44159995010001/ 及 /结果/创建订单/OFR44159995010000/OFR44159995010001/OFR44159995010002 等等,我想不出我该怎么做。 我的路线组件目前看起来是这样的:Reactjs 反应路由器任意数量的路径参数,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,我正在尝试创建可以处理URL的路由,如 /结果/创建订单/OFR44159995010000/ 及 /结果/创建订单/OFR44159995010000/OFR44159995010001/ 及 /结果/创建订单/OFR44159995010000/OFR44159995010001/OFR44159995010002 等等,我想不出我该怎么做。 我的路线组件目前看起来是这样的: <Route path="/results/creat
<Route
path="/results/create-order/:flightId(OFR\d+)"
render={props => {
console.log(props);
return <div>here</div>;
}}
/>
{
控制台日志(道具);
回到这里;
}}
/>
您只需要这样编写,在您的组件中,您将获得flightId,然后编写您的业务逻辑,而不需要路径中的(OFR\d+)
flightId
将包含传递的任何id
。您可以使用props.match.params.flightId
访问它。其他Id也是如此(/:flightId/:anotherFlightId
),您只需要为Id使用不同的名称
<Route
exact
path="/results/create-order/:flightId"
render={props => {
console.log(props.match.params.flightId); //logs flightId
return <div>here</div>;
}}
/>
<Route
exact
path="/results/create-order/:flightId/:anotherFlightId"
render={props => {
console.log(props.match.params.anotherFlightId); //logs anotherFlightId
return <div>here</div>;
}}
/>
{
console.log(props.match.params.flightId);//logs flightId
回到这里;
}}
/>
{
console.log(props.match.params.anotherFlightId);//记录anotherFlightId
回到这里;
}}
/>
您可以将其作为数组传递给组件,而不是在航线中传递航班id
<Route
path="/results/create-order)"
render={YourComponent}
/>
<Link to={{
pathname: '/results/create-order',
state: { flightIds : [ pass your flight ids here ] }
}}> My Link </Link>
我的链接
this.props.location.state.flightIds
访问组件中的ID
但它只适用于single:flightId,但我需要我的组件可以从url获取所有航班ID,比如/create order/:flightId/:flightId可以有多个航班ID你想基于航班ID创建订单,对吗?@PrakashKarena是的,但可以有多个航班ID,1、2甚至10我想你需要使用id数组而不是路由slug.hay明白我的意思吗?@PrakashKarena你的意思是我需要手动解析url,比如
params.split('/')
?是的,我想我明白了。谢谢我只是觉得react路由器有一个机制可以在开箱即用,但这里可以有20个航班!所以你需要一个通用的路径来处理它们@ЕвгенийЛитвиненко
<Link to={{
pathname: '/results/create-order',
state: { flightIds : [ pass your flight ids here ] }
}}> My Link </Link>