не перенаправляет на нужный компонент - PullRequest
0 голосов
/ 04 марта 2020

Я установил маршруты для дочерних компонентов в следующем родительском компоненте как sho

const AdminPage = props => (
    <div>
     //some other code
     <Switch>
         //some other routes
         <Route
            exact
            path = path={props.match.url + "/flights/:flightNumber/passengers"}
            component={PassengersPage}
         />
         <Route exact path="/add-passenger" component={PassengerAddPage} />
     </Switch>
   </div>
);

export default AdminPage;

Ниже приводится дочерний компонент PassengersPage

import { Redirect } from "react-router-dom";

class PassengersPage extends React.Component {
   state = {
     redirectToAddPassengerPage: false
   };
    render() {
       return (
         <>
           {this.state.redirectToAddCoursePage && <Redirect to="add-passenger" />}
           //some presentational JSX

           <button
              style={{ marginBottom: 20 }}
              className="btn btn-primary add-course"
              onClick={() => {
              this.setState({ redirectToAddPassengersPage: true });
              }}
            >
              Add Passenger
           </button>
         </>
        );
    }
 }

Но при нажатии кнопки ничего не происходит , В консоли также нет журналов ошибок. Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 04 марта 2020

У вас есть два состояния, одно из которых управляет перенаправлением, но оно не устанавливается при нажатии кнопки:

class PassengersPage extends React.Component {
  state = {
    redirectToAddPassengerPage: false
  };
  render() {
    return (
      <>
        // This next line needs to be changed to 'redirectToAddPassengersPage'
        {this.state.redirectToAddPassengersPage && <Redirect to="add-passenger" />}

        <button
          style={{ marginBottom: 20 }}
          className="btn btn-primary add-course"
          onClick={() => {
          this.setState({ redirectToAddPassengersPage: true });
          }}
        >
          Add Passenger
        </button>
      </>
    );
  }
}
1 голос
/ 04 марта 2020

Вы обновляете redirectToAddPassengersPage в состоянии, но проверяете состояние в redirectToAddPassengersPage.

Попробуйте обновить код, как показано ниже

{this.state.redirectToAddPassengerPage && <Redirect to="/add-passenger" />}
1 голос
/ 04 марта 2020

Попробуйте использовать пу sh метод истории. Также попробуйте извлечь щелчок, чтобы установить состояние, и при обратном вызове используйте pu sh, чтобы перенаправить на нужный путь.

clickHandler = () => {
        this.setState({ redirectToAddPassengersPage: true },
                          () => {
                             this.props.history.push("/add-passenger");
        })
}

Или, используя свой подход, попробуйте передать push = {true } . Что-то вроде

<Redirect to="/add-passenger" push={true}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...