React lazy loaded route приводит к тому, что перенаправление несовпадающих маршрутов на /404 не работает
Я пытался создать страницу 404 not found и перенаправить туда все несовпадающие маршруты, в настоящее время настроенные со всем контекстом как:
<Switch>
<Route path="/faq" component={FAQ}></Route>
<Route path="/404">
<NotFound />
</Route>
<Suspense fallback={<div>Loading ...</div>}>
<Route path="/admin" component={AdminModule}></Route>
</Suspense>
<Redirect exact={true} from="*" to="/404" />
</Switch>
- Если я перемещу компонент перенаправления над ожиданием с помощью ленивого загружаемого компонента, я больше не смогу активировать маршруты для модуля администратора.
- Если я перемещаю все после приостановки, включая /404, он больше не загружает компонент NotFound для маршрута / 404 даже при переходе к нему вручную.
Пробовал различные другие решения, которые я нашел в документации, но ни одно из них, похоже, не работает, это намеренно или ошибка? если это по дизайну, то какой? Это похоже на вариант использования, который может понадобиться каждому приложению.
1 ответ
Вы не должны использовать Suspense внутри Switch. Ваш Switch должен быть обернут компонентом Suspense.
<Suspense fallback={<div>Loading ...</div>}>
<Switch>
<Route path="/faq" component={FAQ}></Route>
<Route path="/404">
<NotFound />
</Route>
<Route path="/admin" component={AdminModule}></Route>
<Redirect exact={true} from="*" to="/404" />
</Switch>
</Suspense>