React Next.js next-routes包中的路由问题

时间:2018-10-09 21:28:19

标签: next.js

我有一个如下的routes文件,并收到一条错误消息,提示“ ccYear应该是字符串”。也许我没有遵循实现,但是我期望的是我有几个route.add(...),并且我在第二个参数中输入的内容都将被匹配,以查看传入的路由是否与带有正则表达式的参数匹配比较。找到一个(按添加顺序)后,该路由将执行到/ pages / {third parameter}。

我有两个问题。首先,如果我只有一条路线

 routes.add("r1","/session/:ccYear([0-9][0-9][0-9][0-9])/sort/title","sessionPageByTitle");

我收到错误消息“ ccYear归为字符串。我的URL是/ session / 2018 / sort / title

第二个问题是,当我有多路路由添加时,我没有处理第一个匹配的路由。我收到404或此ccYear错误。这是添加的顺序

routes.add(
    "sessionWithYearSlug",
    "/session/:ccYear([0-9][0-9][0-9][0-9])/:sessionSlug",
    "sessionPageDetail"
);

routes.add(
    "sessionWithYearSortTimeRoute",
    "/session/:ccYear([0-9][0-9][0-9][0-9])/sort/time",
    "sessionPageByTime"
);

routes.add(
    "sessionWithYearSortTitleRoute",
    "/session/:ccYear([0-9][0-9][0-9][0-9])/sort/title",
    "sessionPageByTitle"
);

routes.add(
    "sessionWithJustYearRoute",
    "/session/:ccYear([0-9][0-9][0-9][0-9])",
    "sessionPageByTitle"
);

routes.add(
    "sessionWithJustYearRoute",
    "/session/:ccYear([0-9][0-9][0-9][0-9])",
    "sessionPageByTitle"
);

routes.add("sessionWithNoParamsRoute", "/session", "sessionPageByTime");

routes.add(
    "sessionSortByTitleRoute",
    "/session/:ccYear/sort/title",
    "sessionPageByTitle"
);
routes.add(
    "sessionSortByTimeRoute",
    "/session/:ccYear/sort/time",
    "sessionPageByTime"
);

1 个答案:

答案 0 :(得分:0)

关于第一个问题,您可以删除ccYear的正则表达式,

routes.add(
    "sessionWithYearSlug",
    "/session/:ccYear/:sessionSlug",
    "sessionPageDetail"
);

将其保留为字符串,如果用户输入错误的年份,它将自动重定向到404页面。

对于第二个问题,我仍然不确定发生了什么,请提供更具体的错误消息。