【问题标题】:React Router not matching a nested route反应路由器不匹配嵌套路由
【发布时间】:2017-08-06 07:58:32
【问题描述】:

我在使用 React Router 时遇到了一个小问题。我有以下路线配置:

ReactDOM.render(
    <Provider store={store}>
        <Router history={browserHistory}>
            <Route path="/" component={ProjectManagerApp}>
                <IndexRoute component={MainDashboard} />
                <Route path='/projects/:id' component={ProjectView}>
                    <IndexRoute component={ProjectPanel} />
                    <Route path='/todos' component={ProjectTodos} />                    
                </Route>                
                <Route path='*' component={NotFound} />            
            </Route>
        </Router>
    </Provider>
    ,
    document.getElementById('app')
);

问题在于嵌套在“ProjectView”中的路由。 IndexRoute 正在工作,因此,例如,当我访问“http://localhost:3000/projects/38d38234-5bdb-474a-8db8-6206cefe3e87”时,会呈现项目面板组件。但是当我访问“http://localhost:3000/projects/38d38234-5bdb-474a-8db8-6206cefe3e87/todos”时,它落在了 NotFound 路由上。其他所有路线都正常工作。我正在使用 React Router 3。有人可以帮帮我吗?

谢谢

【问题讨论】:

    标签: javascript reactjs react-router react-redux


    【解决方案1】:

    您使用trailing / 指定的所有路由都将相对于根目录,因此

    <Route path='/todos' component={ProjectTodos} />
    

    可以通过http://localhost:8080/todos事件访问,它是一个嵌套路由

    要访问您想要删除尾随/ 的方式。指定您的路线,例如

    ReactDOM.render(
        <Provider store={store}>
            <Router history={browserHistory}>
                <Route path="/" component={ProjectManagerApp}>
                    <IndexRoute component={MainDashboard} />
                    <Route path='projects/:id/' component={ProjectView}>
                        <IndexRoute component={ProjectPanel} />
                        <Route path='todos' component={ProjectTodos} />                    
                    </Route>                
                    <Route path='*' component={NotFound} />            
                </Route>
            </Router>
        </Provider>
        ,
        document.getElementById('app')
    );
    

    【讨论】:

    • 这仍然不起作用。您说得对,我可以使用旧配置从根目录访问“todos”,但是现在,正如您所建议的,在新配置中,我仍然无法访问“projects/id/todos”。它仍在返回 NotFound 路由。
    • 试试projects/:id/
    • 嘿,Shubham,你说得对,我的最后一个问题是我使用的链接。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 2016-08-18
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多