自定义 React Router 渲染顺序

Posted

技术标签:

【中文标题】自定义 React Router 渲染顺序【英文标题】:Customize React Router Render Order 【发布时间】:2016-03-30 09:35:52 【问题描述】:

我遇到了 React Router 中 Routes 的渲染顺序问题。据我了解,任何子路由都会在其父路由之后渲染,因此在 DOM 中渲染在其父路由之上。

<Route path="/" component=Nav> <IndexRoute component=IndexView /> <Route path="/browse" component=BrowseView /> </Route>

我有这个路由器设置,但是在我从 IndexRoute 导航到 /browse 路由后,浏览路由呈现在我的导航组件顶部,我无法单击导航组件上的任何内容。

我的问题是如何强制导航组件总是最后渲染,或者是否有更好的方法来构建我的应用程序以避免这种情况。

谢谢!

【问题讨论】:

如果元素相互重叠(并阻止点击),这不是通过 CSS 解决的,在 Nav 组件上具有 z-index 属性吗? 成功了!谢谢@Ashley'CptLemming'Wilson 【参考方案1】:

像这样拆分relativeabsolute 路由怎么样:

<Router>
    <Route path="/" component=Nav>
        <IndexRoute component=IndexView />
    </Route>
    <Route path="/browse" component=BrowseView />
</Router>

【讨论】:

【参考方案2】:

你可以用 switch 试试这个:

import  BrowserRouter, Route, Switch, browserHistory  from 'react-router-dom';

    <BrowserRouter history=browserHistory>
          <div>
            <Route component=Nav />
            <Switch>
              <Route path="/" component=IndexView />
              <Route path="/browse" component=BrowseView/>
            </Switch>
          </div>
        </BrowserRouter>

我建议您查看文档:

https://reacttraining.com/react-router/web/api/Switch

或者您可以按照本教程进行操作:https://medium.com/@pshrmn/a-simple-react-router-v4-tutorial-7f23ff27adf

【讨论】:

以上是关于自定义 React Router 渲染顺序的主要内容,如果未能解决你的问题,请参考以下文章

react ——withRouter——页面隐式传值—嵌套路由——渲染方式——自定义导航组件

react 自定义Link

我的自定义身份验证 react-router 路由有啥问题?

模拟vue的tag属性,在react里实现自定义Link

create-react-app中antd按需加载配置+自定义主题

导入使用 React-Router-Dom 的自定义模块组件时出现问题