Reactjs 反应路由器任意数量的路径参数

Reactjs 反应路由器任意数量的路径参数,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,我正在尝试创建可以处理URL的路由,如 /结果/创建订单/OFR44159995010000/ 及 /结果/创建订单/OFR44159995010000/OFR44159995010001/ 及 /结果/创建订单/OFR44159995010000/OFR44159995010001/OFR44159995010002 等等,我想不出我该怎么做。 我的路线组件目前看起来是这样的: <Route path="/results/creat

我正在尝试创建可以处理URL的路由,如

/结果/创建订单/OFR44159995010000/

/结果/创建订单/OFR44159995010000/OFR44159995010001/

/结果/创建订单/OFR44159995010000/OFR44159995010001/OFR44159995010002 等等,我想不出我该怎么做。 我的路线组件目前看起来是这样的:

            <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}
    />
    
    
    
  • 然后可以将航班ID作为数组传递给组件

    <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>