【问题标题】:NextJS Dynamic Routing - Is it possible to set array of route names?NextJS 动态路由 - 是否可以设置路由名称数组?
【发布时间】:2021-04-01 23:27:12
【问题描述】:

我在我的应用中使用动态路由。这是我正在使用的文件夹结构

-pages
  -department
    -[slug].js

现在如果只有 slug 值是 cse, eee, swe, english e.t.c,我想显示页面,否则我想显示 404 Not Found 页面。有没有办法设置路由名称数组?然后,如果 slug 值(我可以使用 getServerSideProps 获得)包含在该数组中,我将提供页面,否则提供 404 Not Found 页面。

我为什么需要它?

在getServerSideProps 函数中,我从 api 端点获取数据。在这种情况下,如果 slug 值不包含在 api-endpoint 中,服务器会抛出 Request failed with status code 501 错误! 因此,如果 slug 值为cse,则 api-endpoint 可用,我可以获取数据。如果 slug 值为anything or xyasdfs,则 api-endpoint 不可用,我无法获取数据,服务器会抛出以下错误。

【问题讨论】:

    标签: javascript reactjs axios next.js


    【解决方案1】:

    从服务器端渲染应该是这样的

    Page.getInitialProps = async ({query}) => {
      if(query.slug == 'cse') {
        //codes
      }
    }
    

    或者你可以使用下一个路由器挂钩 https://nextjs.org/docs/routing/dynamic-routes

    【讨论】:

    • 我手动比较 slug 值,但我正在寻找更好的解决方案。
    【解决方案2】:

    我会在我的组件中检查我的响应正文中的属性。例如,如果所有部门都有名称,则检查它,如果不存在,则返回 404。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 2021-08-12
      • 2022-06-12
      • 2015-06-14
      • 2021-12-04
      • 2020-12-13
      相关资源
      最近更新 更多