React Router V5:在动态路由中需要嵌套路由

灵魂

具体地说,react-router-dom v5.2.0我有一个项目列表,所有项目都需要自己的页面,并且在该动态路由中,我想要一些嵌套的路由。

这样想:

  • myapp.com/:item(主项目页面)
  • myapp.com/:item/about(关于项目页面)
  • myapp.com/:item/faq(常见问题页面)

事情是,按照我实现它的方式,每个嵌套/:item/whatever页面都会得到一个404。这是我的路由当前的样子:

const App = ({}) => {
    return (
        <Router>
            <Switch>
                <Route exact path='/:id' component={Item}>
                </Route>
            </Switch>
        </Router>
    )
}

const Item = ({ match }) => {
    return (
        <div>
            TODO: Item {match.url}
            <Switch>
                <Route path={`${match.path}/about`}>
                    <h1>TODO: About</h1>
                </Route>
                <Route path={`${match.path}/faq`}>
                    <h1>TODO: FAQ</h1>
                </Route>
            </Switch>
        </div>
    );
};

就目前而言,我可以获取的页面/:item,但是如果我尝试转到其嵌套路线,则会得到404。我的设置有问题吗?我该如何工作?

请注意,我已经尝试了很多不同的方法:

  • App组件中的嵌套路线
  • 有无Switch包装纸
  • 将组件传递给Route作为component嵌套组件道具

编辑:决定包含我的Item组件的版本,该版本中,我可以想到该/about路线的所有路线。绝对没有任何效果,根据文档(应参阅递归路径,它应该起作用,并且我开始质疑自己的理智

const Item = ({ match }) => {
    const { url } = useRouteMatch();
    return (
        <div>
            TODO: Item {match.url}
            <Route path={`${url}/about`} component={() => <h1>TODO: About</h1>}/>
            <Route path={`/about`} component={() => <h1>TODO: About</h1>}/>
            <Route path={`about`} component={() => <h1>TODO: About</h1>}/>
            <Route path={`:about`} component={() => <h1>TODO: About</h1>}/>
            <Switch>
                <Route path={`${match.path}/about`}>
                    <h1>TODO: About</h1>
                </Route>
                <Route path={`${url}/about`} component={() => <h1>TODO: About</h1>}/>
                <Route path={`/about`} component={() => <h1>TODO: About</h1>}/>
                <Route path={`/:about`} component={() => <h1>TODO: About</h1>}/>
                <Route path={`about`} component={() => <h1>TODO: About</h1>}/>
                <Route path={`:about`} component={() => <h1>TODO: About</h1>}/>
            </Switch>
        </div>
    );
};
灵魂

因此,似乎我正在采用完全错误的方式进行操作。

对于我想做的事情,我的嵌套路由需要在App组件上,或者至少在第一个Switch包装器的根目录上

所以基本上这是解决方案:

const App = ({}) => {
    return (
        <Router>
            <Switch>
                <Route exact path='/:id' component={Item}/>
                <Route exact path='/:id/about' component={() => <div>TODO: About</div>}/>
                <Route exact path='/:id/faq' component={() => <div>TODO: FAQ</div>}/>
            </Switch>
        </Router>
    )
}

我仍然很困惑,因为文档显示的方式有所不同,但是无论如何,这就是解决问题的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React Router V5:在动态路由中需要嵌套路由

来自分类Dev

react-router v5 –嵌套路由

来自分类Dev

无法在React Router v5上打印嵌套路由的子组件

来自分类Dev

在 react-router v4 中看到嵌套路由中的空白页

来自分类Dev

React Router v4 - 嵌套路由问题

来自分类Dev

react-router中的嵌套路由

来自分类Dev

React Router,在参数后嵌套路由

来自分类Dev

React Router,在参数后嵌套路由

来自分类Dev

react-router的嵌套路由中的“ children”类型是什么?

来自分类Dev

在React Router中的嵌套路由中刷新后看到空白页

来自分类Dev

react-router 路由 <Link> v5

来自分类Dev

react-router-relay中的嵌套路由

来自分类Dev

在React-Router中找不到嵌套路由的字体

来自分类Dev

React Router 6 alpha 4嵌套路由

来自分类Dev

React Router Dom嵌套路由,或者如何传递

来自分类Dev

嵌套路由不适用于react-router

来自分类Dev

react-router-relay中的嵌套路由

来自分类Dev

无法使用React Router获得嵌套路由以进行匹配

来自分类Dev

React-Router嵌套路由不起作用

来自分类Dev

React Router-无法渲染嵌套路由

来自分类Dev

使用React Router v4的嵌套路由-解决方案

来自分类Dev

如何使React Router与静态资产,html5模式,历史API和嵌套路由一起使用?

来自分类Dev

React Router:为什么嵌套路由使 React 在同一页面上呈现

来自分类Dev

react-router-创建没有组件嵌套的嵌套路由

来自分类Dev

React-Router:嵌套路由而不嵌套带有通配符路径的组件

来自分类Dev

React-Router:嵌套路由而不嵌套带有通配符路径的组件

来自分类Dev

如何使用 React Router - ReactJS 添加嵌套和非嵌套路由?

来自分类Dev

如何使用react-router 5正确嵌套多条路由

来自分类Dev

如何使用react-router从嵌套路由的根目录重定向?

Related 相关文章

  1. 1

    React Router V5:在动态路由中需要嵌套路由

  2. 2

    react-router v5 –嵌套路由

  3. 3

    无法在React Router v5上打印嵌套路由的子组件

  4. 4

    在 react-router v4 中看到嵌套路由中的空白页

  5. 5

    React Router v4 - 嵌套路由问题

  6. 6

    react-router中的嵌套路由

  7. 7

    React Router,在参数后嵌套路由

  8. 8

    React Router,在参数后嵌套路由

  9. 9

    react-router的嵌套路由中的“ children”类型是什么?

  10. 10

    在React Router中的嵌套路由中刷新后看到空白页

  11. 11

    react-router 路由 <Link> v5

  12. 12

    react-router-relay中的嵌套路由

  13. 13

    在React-Router中找不到嵌套路由的字体

  14. 14

    React Router 6 alpha 4嵌套路由

  15. 15

    React Router Dom嵌套路由,或者如何传递

  16. 16

    嵌套路由不适用于react-router

  17. 17

    react-router-relay中的嵌套路由

  18. 18

    无法使用React Router获得嵌套路由以进行匹配

  19. 19

    React-Router嵌套路由不起作用

  20. 20

    React Router-无法渲染嵌套路由

  21. 21

    使用React Router v4的嵌套路由-解决方案

  22. 22

    如何使React Router与静态资产,html5模式,历史API和嵌套路由一起使用?

  23. 23

    React Router:为什么嵌套路由使 React 在同一页面上呈现

  24. 24

    react-router-创建没有组件嵌套的嵌套路由

  25. 25

    React-Router:嵌套路由而不嵌套带有通配符路径的组件

  26. 26

    React-Router:嵌套路由而不嵌套带有通配符路径的组件

  27. 27

    如何使用 React Router - ReactJS 添加嵌套和非嵌套路由?

  28. 28

    如何使用react-router 5正确嵌套多条路由

  29. 29

    如何使用react-router从嵌套路由的根目录重定向?

热门标签

归档