Условное имя класса в маршрутизаторе в React

#reactjs #react-router #react-hooks #react-router-dom #jss

#reactjs #react-маршрутизатор #реагирующие крючки #react-router-dom #jss

Вопрос:

У меня есть маршрутизатор в моем приложении react, и я хотел применить classes.root его только к определенным маршрутам. Однако приведенный ниже код не работает, поскольку он находится внутри <Switch> . Как вы можете видеть в моем коде, я хотел применить classes.root только к Login and Signup . Пожалуйста, проверьте мой код ниже:

 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;
  

Ответ №1:

Вам нужно изменить способ Route определения с using component property на using render property . Я не включил передачу реквизитов Login компоненту, я просто показал, как вы можете использовать classes .

При необходимости вам следует использовать <Login {...props}/>

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

для этого

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

Комментарии:

1. является ли передача реквизитов более рекомендуемой?

2. это то, как вы их используете. если они вам не нужны, вы их не передаете 🙂