Reactjs 如何在不使用';精确';参数

Reactjs 如何在不使用';精确';参数,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,我正在尝试使用react路由器设置模式路由。要使其工作,显示模式的基础路由后面不能有“精确”参数 有没有一种方法可以保持如下所示的当前路由功能,但不在主路由上使用“精确”功能?(Home组件将创建模式路由)即,是否有其他方法在react路由器中使用此路由(使用更多交换机等),这样我可以从Home路由中省略“精确”且所有内容仍将正确路由 <BrowserRouter> <Switch> <MainLayout> &

我正在尝试使用react路由器设置模式路由。要使其工作,显示模式的基础路由后面不能有“精确”参数

有没有一种方法可以保持如下所示的当前路由功能,但不在主路由上使用“精确”功能?(Home组件将创建模式路由)即,是否有其他方法在react路由器中使用此路由(使用更多交换机等),这样我可以从Home路由中省略“精确”且所有内容仍将正确路由

<BrowserRouter>
    <Switch>
        <MainLayout>
            <Route exact path='/' component={Home}/>
            <Route exact path='/login' component={Login}/>
            <Route exact path='/buy/:id' component={View}/>
            <PrivateRoute exact path='/dashboard' component={Dashboard}/>
        </MainLayout>
    </Switch>
</BrowserRouter>

例如,如果我在上述代码中删除Home Route中的'exact'参数,则登录组件将显示在主页上,而它应该位于单独的页面/路由上

这可能吗?
干杯,Matt

React路由器返回与url匹配的第一个组件,即使它部分匹配 因此,“/login”和“/”都将部分和完全匹配第一个url,并返回Home组件,这是不正确的。 我认为在你的情况下,改变路线的顺序会起作用

<Switch>  
    <MainLayout>  
        <Route path='/login' component={Login}/>  
        <Route path='/buy/:id' component={View}/>  
        <PrivateRoute path='/dashboard' component={Dashboard}/>  
        <Route path='/' component={Home}/>  
    </MainLayout>  
</Switch>  


将回家路线设置为最后一条路线,然后您可以从所有路线中删除精确路线routes@kenn谢谢你的回复。仍然是同一个问题,它只是首先呈现登录组件,然后呈现它下面的主组件。我没有试过使用“精确”的组件,除了使用“精确”的家以外的所有组件,但仍然是相同的问题。谢谢您的回复。请看我上面的评论,当我点击登录链接时,登录组件和主页组件都呈现在同一页面上