Коммутатор React Router не работает, когда он отделен от Router в компоненте. - PullRequest
0 голосов
/ 16 января 2019

Я попытался разделить компоненты Router и Switch в 2 разных файлах ради модульности, но это не сработает, и ошибки не имеют смысла ...

Основной файл, App.jsx, отображает что-то вроде этого:

<Router>
    <div>
        <Nav />
        <AppRouter />
    </div>
</Router>

Вы можете заметить, что Маршрутизатор содержит только 1 дочерний элемент, который является div.

AppRouter отображает что-то вроде этого:

<Switch>
    <Route path="/" exact component={Home} />
    <Route path="/list" exact component={List} />
    <Route component={NotFound} />
</Switch>

В то время как Nav просто содержит список Link s:

<Link to="/">Home</Link>

Насколько я знаю, поскольку Router содержит только 1 дочернего элемента и поскольку Switch должен работать с несколькими дочерними элементами, этот код должен быть в порядке.

Однако этот код не работает:

Uncaught Error: A <Router> may have only one child element

Вы можете использовать живой пример здесь.


Я также заметил странное поведение: когда я удаляю некоторые Route s, так что остается только 1 Route, больше нет ошибки, но тогда навигация больше не работает (она меняет URL, ничего еще).


Что там происходит и как мне исправить мой код?

1 Ответ

0 голосов
/ 16 января 2019

Вы должны импортировать Переключатель как import { Switch, Route } from "react-router-dom"; в вашем AppRouter.jsx.

Вы не можете импортировать BrowserRouter as Switch

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