React Router v4 嵌套路由与 Switch

IT技术 javascript reactjs react-router
2021-04-28 12:47:35

尝试执行以下操作,但不起作用。

ReactDOM.render(
  <Router>
    <div className="route-wrapper">
      <Switch>
        <App>
          <Route exact path="/" component={HomePage} />
          <Route path="/user" component={UserPage} />
        </App>
        <Route component={Err404} />
      </Switch>
    </div>
  </Router>,
  document.getElementById('main')
)

正如文档所说,在 Switch 元素中只允许使用 Route 和 Redirect 元素。如何在不将 HomePage 和 UserPage 显式包装在 App 中或让 App 包装错误页面的情况下使其工作?

1个回答

虽然我已经开始开发一个“通用 React 应用程序”,其中第一个页面加载是通过服务器端渲染完成的,但我遇到了类似的问题,因为 React-Router 刚刚更新到 4.0。您应该考虑按照以下方式重组您的应用程序:

ReactDOM.render(
  <Router>
    <div className="route-wrapper">
      <Switch>
        <Route path="/" component={App} />
        <Route component={Err404} />
      </Switch>
    </div>
  </Router>,
  document.getElementById('main')
)

其中 App 组件重构如下:

class App extends React.Component {
  render() {
    return <div>
      <Switch>
        <Route exact path="/" component={HomePage} />
        <Route exact path="/user" component={UserPage} />
      </Switch>
    </div>;
  }
}