【问题标题】:How to redirect all routes to gatsby index如何将所有路由重定向到 gatsby 索引
【发布时间】:2020-09-07 04:01:00
【问题描述】:

我正在尝试制作一个只有一页来处理所有路线的 Gatsby 项目。我有这样的索引页面:

const App = () => {
  return <Router>
    <Home path="/"/>
    <Login path="/login" />
    <Content path="/content" />
  </Router>
}

src/pages 文件夹上我只有index.js

如何让这个页面处理所有的路由?

检查 Gatsby 文档 (https://www.gatsbyjs.com/docs/client-only-routes-and-user-authentication/) 我知道我可以像这样使用插件 gatsby-plugin-create-client-paths

{
  resolve: `gatsby-plugin-create-client-paths`,
  options: { prefixes: [`/app/*`] },
},

如果我使用反应路由器创建一个名为app.js 的页面,这会很好。所以/app/*的所有路由都到了这个页面。

但是我怎样才能在根 url 上进行这种重定向:/。我想让任何路线/* 进入索引页面:index.js

关于如何做到这一点的任何建议? :)

【问题讨论】:

  • 你找到解决办法了吗?
  • 还没有西蒙。我正在使用一个名为gatsby-plugin-create-client-paths 的插件。它适用于 /app 等自定义前缀路由,但我无法使其在根路由 / 上运行

标签: reactjs gatsby reach-router


【解决方案1】:

像这样设置index.js

const IndexPage = () => {
  return (
    <Router>
      <Home path="/"/>
      <Login path="/login" />
      <Content path="/content" />
    </Router>
  )
}

export default IndexPage

gatsby-node.js:

exports.onCreatePage = ({ page, actions }) => {
  const { createPage } = actions
  if (page.path === `/`) {
    page.matchPath = `/*`
    createPage(page)
  }
}

重启gatsby develop,索引页面会处理你设置的路由。

【讨论】:

  • 不确定 Filipe 是否看过这个答案,但它对我有用。我也在使用相同的插件。
猜你喜欢
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 2019-07-17
  • 2016-04-25
相关资源
最近更新 更多