#javascript #reactjs #react-router
#javascript #reactjs #react-маршрутизатор
Вопрос:
Я использую React-Router 4.3.1
, и когда я создаю свое веб-приложение, я получаю ошибку
Invariant Violation: "You should not use <Redirect> outside a <Router>"
Я использовал <Redirect />
только в 3 местах, и даже когда я комментирую их и создаю, я продолжаю получать ту же ошибку. При использовании serve
на localhost ошибки нет, и она возникает только тогда, когда я использую express
и обслуживаю ее через nginx
прокси.
Я использовал <Redirect />
вот так
<Switch>
<ProtectedRoute
path="/dashboard"
name="Home"
component={DefaultLayout}
/>
<ProtectedRoute
path="/"
name="Home"
component={DefaultLayout}
/>
<Redirect to="/404" />
</Switch>
также похоже на это
Где ProtectedRoute
находится
<Route
path={path}
{...rest}
render={props => {
console.log(getCurrentUser());
if (!getCurrentUser()) {
return (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
/>
);
} else {
return Component ? <Component {...props} /> : render(props);
}
}}
/>
и другие <Redirect />
подобные этому
<Suspense fallback={this.loading()}>
<Switch>
<Redirect from="/" to="/dashboard" />
</Switch>
</Suspense>
Последнее, как
if (getCurrentUser()) return <Redirect to="/dashboard" />;
Есть ли что-то неправильное в том, как я его использую.
С помощью netlify
я могу обслуживать без каких-либо проблем.
Комментарии:
1. Есть ли у вас компонент маршрутизатора, переносящий приостановку
2. Нет, это просто
<Container><Suspense .../></Container>
3. С помощью
netlify
я могу обслуживать без каких-либо проблем.4. Имеется в виду, что это компонент маршрутизатора в родительской иерархии компонента Suspense, иначе перенаправление будет за пределами маршрутизатора, который не будет работать
5. О, так мне нужно обернуть
<Suspense />
маршрутизатором?