React.js 中可以有多个 <Switch> 吗?

IT技术 javascript reactjs react-router react-router-v4
2021-05-01 02:03:30

我正在构建一个没有 Redux 的 React 项目。

我希望有两个,或者在这种情况下有 3 个不同的开关

1st Switch 可以在用户登录后在Home page(普通网站)和UserPage(Dashboard)之间切换... 然后每个都是Switchers,所以Home会在Home组件之间切换,UserPage会在用户页面组件。这甚至可能吗?

                        Main Switcher 
     Home Page (Switch)              Dashboard
Home About Contact, Careers     My Profile, Courses, Classes, Donations...

这就是项目的外观和结构。

1个回答

您可以根据需要使用任意数量的Switch组件。它只是呈现其下指定的所有路由的第一个匹配项。

在您的情况下,应该按照这些方式进行操作:

const Home = ({match}) => {
  return(
    <Switch>
      <Route path={match.url} exact={true} component={HomeDefaultComponent} />
      <Route path={`${match.url}/about`} exact={true} component={About} />
      <Route path={`${match.url}/contact`} exact={true} component={Contact} />
      <Route path={`${match.url}/careers`} exact={true} component={careers} />
    </Switch>
  );
};

const Dashboard = ({match}) => {
  return(
    <Switch>
      <Route path={match.url} exact={true} component={DashboardDefaultComponent} />
      ... other Dashboard paths like Home component above
    </Switch>
  );
};

const App = () => {
  return(
    <Switch>
      <Route path='/home' component={Home} />
      <Route path='/dashboard' component={Dashboard} />
    </Switch>
  );
}