Программно создавать PrivateRoutes на Гэтсби - PullRequest
2 голосов
/ 28 июня 2019

Мне нужно создать единственный блог клиента.Я следовал gatsby docs , чтобы создать сайт с аутентификацией пользователя, но мне нужно программно создавать PrivateRoutes на основе файлов уценки.

В настоящее время я использую этот компонент для визуализации PrivateRoutes, и они работают, но как мне создать PrivateRoute для динамически создаваемой страницы, если компонент не существует.Страницы создаются во время сборки с помощью API gatsby onCreatePage, но он использует только компонент шаблона.

  <Layout>
    <Router>
      <PrivateRoute path="/app/profile" component={Profile} />
      <PrivateRoute path="/app/contact" component={ContactPage} />
      <Login path="/app/login" />
    </Router>
  </Layout>
)

Статические страницы Маршруты создаются следующим образом:

exports.onCreatePage = async ({ page, actions }) => {
  const { createPage } = actions

  // page.matchPath is a special key that's used for matching pages
  // only on the client.
  if (page.path.match(/^\/app/)) {
    page.matchPath = "/app/*"

    // Update the page.
    createPage(page)
  }
}

И вот что я пытаюсь сделать для сообщений в блоге:

exports.onCreatePage = async ({ page, actions }) => {
  const { createPage } = actions

  // page.matchPath is a special key that's used for matching pages
  // only on the client.
  if (page.path.match(/^\/blog/)) {
    page.matchPath = "/blog/*"

    // Update the page.
    createPage(page)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...