Как я могу перенаправить через реагирующий маршрутизатор v4

На основе isLoggedIn мне нужно направить на разные компоненты.

Я получаю страницу входа, но не могу отобразить домашнюю страницу.

{this.state.isLoggedIn ?
    (
      <Route
        path='/home'
        render = {() => <HomePage  onLogout = {this.onLogout} />}
      />
    )
    :
    (
      <Route exact path='/' component = {() => <LoginPage onLogin = {this.onLogin} />}/>
    )
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
161
3

Ответы 3

Вы можете использовать this.props.history.push(myRoutes) и отправить маршрут в аргументе. Он перенаправит вас на нужный маршрут.

Вы можете перенаправить, отобразив, что <Redirect> перейдет в новое место. Новое местоположение переопределит текущее местоположение в стеке истории, как это делают перенаправления на стороне сервера (HTTP 3xx).

import { Route, Redirect } from 'react-router'

<Route exact path = "/" render = {() => (
  loggedIn ? (
    <Redirect to = "/dashboard"/>
  ) : (
    <PublicHomePage/>
  )
)}/>

Для передачи реквизита путем перенаправления

<Redirect to = {{
    pathname: '/dashboard',
    state: { id: '123' }
}} />

Затем вы можете получить доступ к реквизиту через this.props.location.state.id.

как я могу отправить реквизиты компонентам в этом перенаправлении

ReNinja 29.01.2019 08:21

позвольте мне добавить больше примеров в ответ. @ReNinja Я добавил пример для передачи реквизита с помощью перенаправления. пожалуйста, проверьте

Tung Duong 29.01.2019 08:23

где я могу указать имя компонента Домашняя страница <HomePage onLogout = {this.onLogout} />

ReNinja 29.01.2019 08:35

Я думаю, вы можете проверить это руководство. blog.pshrmn.com/entry/simple-react-router-v4-tutorial имеет return ( <main> <Switch> <Route path='/' component = {Home}/> <Route path='/roster' component = {Roster}/> <Route path='/roster' component = {Roster}/> <Route path='/roster' component = {Roster}/> ='/schedule' component = {Schedule}/> </Switch> </main> ); поэтому вы можете объявить компонент для маршрута и перенаправить на этот маршрут

Tung Duong 29.01.2019 08:39

Получение ошибки синтаксического анализа в перенаправлении Line 36: Parsing error: Unexpected token, expected "," 34 | <Redirect to = {{ 35 | pathname: '/home', > 36 | onLogout:{this.onLogout} | ^ 37 | }}/> 38 | ) : ( 39 | <LoginPage onLogin = {this.onLogin} />

ReNinja 29.01.2019 09:36

Я попробовал приведенный ниже код, но домашняя страница не отображается `{this.state.isLoggedIn? (<div> <Route path='/home' render = {props=> <HomePage onLogout = {this.onLogout} />} /> </div> ) : ( <Route точно path='/' render = { props => <LoginPage className = "login-page" onLogin = {this.onLogin} />} />) }`

ReNinja 29.01.2019 10:05

Использовать перенаправить

Из родительского компонента передайте this.state.isLoggedIn в качестве реквизита компонентам LoginPage и HomePage.

в компоненте LoginPage

render(){
  if (this.props.isLoggedIn){
   return <Redirect to='/home' />
  }

  return ( your login page )
}

Сделайте то же самое в компоненте HomePage, указав вместо этого путь перенаправления '/'.

Можно ли перенаправить в функции render()? И в чем разница между "<Redirect to='/home' />" и "this.props.history.push('/home');"

mhlsf 27.03.2019 11:48

Извините за задержку с ответом. Да, перенаправлять в рендере нормально, потому что <Redirect /> — это компонент реакции. Различия между этими двумя здесь: stackoverflow.com/a/54452810/10104154

Peter 06.05.2019 08:04

Другие вопросы по теме