В чем разница в перенаправлении от '/' и '/ something' в react-router? - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь перенаправить пользователя с / на /info, если у него есть обновление в состоянии. Все работает нормально, если требуется перенаправление от /anything до /data, считая тот же компонент, который находится под /, но если перенаправление выполняется с /, а не с /home, оно не выполняется, и остается на том же компоненте. Строка под <Redirect to={'/info'} /> видна. В чем разница, и могу ли я просто перенаправить с /?

Это чисто функциональные компоненты и не содержат никаких других вещей, кроме разметки. Компонент приложения:

function App() {
  return <div className={'app'}>
     <PerfectScroll>
      <main className={'contentArea'}>
       <Router history={history}>
         <Route exact path={'/'} component={Select} />
         <Route path={'/home'} component={Select} />
         <Route path={'/info'} component={Info} />
         <Route path={'/summary'} component={Summary} />
         <Route path={'/thank-you'} component={() => <h1>Thanks</h1>} />
        <Redirect from={'*'} to={'/'} />
       </Router>
      </main>
     </PerfectScroll>
  </div>
}

Выберите компонент: я вижу «Привет» при перенаправлении с /

function Select {
 return <>
  <Redirect to={{pathname: '/info'}} push/>
  <h1>Hey</h1>
 </>
}

История браузера:

import { createBrowserHistory } from 'history';

const history = createBrowserHistory();

export default history;

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Вместо использования перенаправления просто добавьте несколько маршрутов в путь

Пример:

<Route exact path={["/","/pathName"]} component={yourComponentName} />

Обновить Если вы хотите, чтобы перенаправление работало, если нет маршрут найден, вам нужно сделать это вот так

 <Route path="*" component={Select} />
0 голосов
/ 18 июня 2020

Я реализовал ваш пример на codeandbox , единственное, что я изменил, - это компонент Select, обернутый React Fragments (<></>), поскольку он работал нестабильно. Переключите проверку компонентов для первого дочернего элемента, и фрагмент может его нарушить.

function Select() {
  return <Redirect to={{ pathname: "/info" }} push />;
}

Если я понимаю ваш лог c, он должен работать здесь. Проверьте код: https://codesandbox.io/s/react-router-8obur?file= / index. js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...