Redirect в React Router 5 успешно перенаправляет, но не отображает дочерний компонент - PullRequest
1 голос
/ 27 мая 2020

Я изменил маршруты в своем приложении, и в случае, если какие-либо пользователи добавили URL-адреса в закладки к старым маршрутам, я добавил некоторые перенаправления на новые маршруты. Большинство из них работают нормально, но это не так -

App.tsx

import { Router } from 'react-router-dom';
import Routes from './Routes';
import history from './history';

const App: FunctionComponent = () => (
  <Router history={history}>
    <Routes />
  </Router>
);

export default App;

RouteSwitch.txs

import React, { FunctionComponent } from 'react';
import { Switch, Route, Redirect } from 'react-router-dom';

const RouteSwitch: FunctionComponent = () => {
  return (
    <Switch>
      <Redirect exact from="/documents" to="/documents/list" />
      <Route exact path="/documents/list">
        <DocumentsContainer />
      </Route>
    </Switch>
  );
};

export default RouteSwitch;

Перенаправление с /documents на /documents/list работает, но DocumentsContainer не отображается. Если я напрямую запрошу /documents/list, он будет отображаться нормально. Это как если бы <Switch> находит первое совпадение (перенаправление), а затем решает, что его работа выполнена. Я попытался добавить опору push к перенаправлению, но это не имело значения.

Мой пример очень похож на тот, который приведен на сайте React Training - https://reacttraining.com/react-router/web/api/Redirect/from-string

Мысли?

1 Ответ

0 голосов
/ 27 мая 2020

Проблема решена - компонент DocumentsContainer был на самом деле рендеринг, но просто не отображал ничего из-за причуды, связанной с тем, как использование перенаправления приводило к увеличению счетчика загрузчика на единицу (но не уменьшено), что приводит к тому, что счетчик загрузчика не возвращается к 0, чтобы данные документа могли быть загружены из Redux и содержимое было отображено.

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