React 路由器中的条件类名

Conditional ClassName in Router in React

我的 React 应用程序中有一个路由器,我只想在特定路由上应用 classes.root。 但是下面的代码不起作用,因为它在 <Switch> 内。正如您在我的代码中看到的,我只想在 LoginSignup 上应用 classes.root。 请检查我的代码:

function Routes() {
  const classes = useStyles();
  return (
    <Router>
      <Suspense fallback={<h3>Loading...</h3>}>
        <Switch>
          <Route path="/goto" component={GoTo} />
          <div className={classes.root}>
            <Route path="/signin" component={Login} />
            <Route path="/signup" component={Signup} />
          </div>
          <PrivateRoute path="/" component={Private} />
        </Switch>
      </Suspense>
    </Router>
  );
}

export default Routes;

您需要将 Route 的定义方式从使用 component 属性 更改为使用 render 属性。我没有包括将道具传递给 Login 组件,我只是展示了如何使用 classes.

如果有必要,那么你应该使用<Login {...props}/>

<Route path="/signin" component={Login} />

至此

   <Route path="/signin" render={props => {
     return (
      <div className={classes.root}>
        <Login/>
      </div>
    )
   }}
  />