Не получая реквизит из истории использования в React

#reactjs #react-router-dom

Вопрос:

Я разрабатываю веб-приложение, и всякий раз, когда пользователь входит в систему или регистрируется, я хочу, чтобы приложение перенаправлялось на домашнюю страницу с новой навигационной панелью. Для этого после получения запроса от axios я использую метод React useHistory, чтобы заменить текущий компонент домашней страницей, как это

   axios.post('http://localhost:3020/login', {
        email: email,
        password: password
      })
      .then(function (response) {
        console.log(response.data);
       history.replace({
        pathname: '/',
        state: {  // location state
          login: true, 
        },
      });
      })
 

И в App.js Я получаю реквизит вот так

 function check(props){
  
console.log(props);


  if(isLoggedIn === true)
  return (

    <BrowserRouter>
    <Navbars />
    <Switch>
    <Route path="/" component={Dashboard} exact />
    <Route path="/math" component={Math} />
    <Route path="/reasoning" component={Reasoning} />
    <Route path="/computer" component={Computer} />
    <Route path="/english" component={English} />
    </Switch>
    </BrowserRouter>
     
  )
  else
  return(

    <BrowserRouter>
    <Navbars1 />
    <Switch>
    <Route path="/" component={Home} exact />
    <Route path="/login"  render={(props) => (
      <Login {...props} isAuthed={setLoginStatus} />
    )}/>
    <Route path="/signup" component={Signup} />
    </Switch>
    
    
     </BrowserRouter>
  )
}
 

Но реквизит не определен в консоли, когда я загружаю напрямую, и ничего не показывает при перенаправлении

Ответ №1:

В вашей текущей настройке вы не сможете этого сделать, так как

   <App>
    <BrowserRouter />
  </App>
 

Если вы измените маршрут, приложение не будет обновляться. Вместо,

   <BrowserRouter>
    <App>
  </BrowserRoute>
 

Сделайте перенаправление маршрута после входа в систему, и вам не нужны if инструкции внутри приложения, об этом позаботятся маршруты.

Есть много примеров, https://www.pluralsight.com/guides/how-to-set-react-router-default-route-redirect-to-home.

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

1. Я не понял, сэр