Как использовать множественные отклики в режиме ожидания с маршрутизатором?

Я использую "@reach/router": "^1.2.1" и в моем App.js file У меня есть резервный компонент, который нужно показать во время загрузки моих маршрутов:

<React.Suspense fallback={<MainLandingPageLoadingScreen />}>
  <Router>
    <MainLandingPage path="/" />
    <AnotherLandingPage path="/coolbeans" />
    <NotFound default />
  </Router>
</React.Suspense>

Но в зависимости от маршрута я хочу использовать другой загрузочный компонент в качестве запасного варианта, так что-то вроде:

<Router>
  <React.Suspense fallback={<AnotherLandingPageLoadingScreen />}>
    <MainLandingPage path="/" />
    <NotFound default />
  </React.Suspense>

  <React.Suspense fallback={<AnotherLandingPageLoadingScreen />}>
    <AnotherLandingPage path="/coolbeans" />
  </React.Suspense>
</Router>

Это не будет работать, потому что маршрутизатор должен быть обернут вокруг Suspense, а не наоборот. Но если я разделю его, как показано ниже, второй список маршрутизаторов не будет выбран, и маршрут будет 404:

<React.Suspense fallback={<MainLandingPageLoadingScreen />}>
  <Router>
    <MainLandingPage path="/" />
    <NotFound default />
  </Router>
</React.Suspense>

<React.Suspense fallback={<AnotherLandingPageLoadingScreen />}>
  <Router>
    <AnotherLandingPage path="/coolbeans" />
  </Router>
</React.Suspense>

Как правильно предоставить запасной компонент на уровне маршрутизации?

1 ответ

Привет, у меня был этот сценарий с использованием React Router вместо Reach Router, но я думаю, что применима та же идея.

Вы по-прежнему хотите, чтобы вокруг всех ваших маршрутов был только один компонент Suspense:

Другие вопросы по тегам