问题标签 [next-router]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - Next.js 路由与子路由的“next-connect”
在我的项目中,我使用包Next.js
创建了一个类似快递的route->middleware->endpoint
模式。next-connect
我有这个路线模式:
在我的pages/api/tours/index.js
文件中,我添加了一条路由来捕获 api/tours 和所有其他子路由,例如 api/tours/top-5-cheap。根据文档,这应该有效。但是只有 api/tours 可以正常工作,对 api/tours/subroute 的任何请求都会给出一个page not found error.
Docs: next-connect
我希望能够从pages/api/index.js
文件中捕获对 api/tours 和 api/tours/subroute 的所有请求,而不是为每个子路由创建一个文件 欢迎提出任何建议或帮助
next.js - 下一个路由器允许页面重新加载,但通过手动输入 url 来阻止导航
我有一个多步表单,第二步是用户输入。因此,如果网络崩溃或出于任何原因用户需要使用输入重新加载第二步,我希望他能够这样做,而不会被引导到默认路由。但是,如果用户希望在输入 url 的步骤之间导航,他不应该这样做。
这段代码不仅会在手动录制时将用户返回到家中,还会在重新加载时返回:
所以,我一直在考虑检查,如果当前路径基本保持不变,应该不会发生 router.replace 。我的代码肯定坏了,但我认为后面的想法应该是正确的:
所以基本上问题是,我如何检查路径是否已更改,然后进行替换,如果没有,则仅呈现相同的表单步骤。
routes - next.js 浅层路由不同页面
我想为我的下一个项目添加路由,但不能对不同的页面使用浅路由。例如,我想从 /s/:id 切换到 /p/:id,而不需要重新渲染页面,就像我仍然在同一个 URL 上一样。我的项目已经建成,我只想添加路由,但不允许这样做,如文档所示。
我知道它不应该起作用,但是替代方法是什么?
unit-testing - 如何在 next/router jest.mock 中动态更新查询
有没有办法动态更新next/router/
jest.mock 查询?
我本质上是在尝试根据运行的测试模拟不同的查询。
IE
上面的模拟应该为描述块 1 运行
然后应该更新模拟以使用不同的查询运行块2,即
所以本质上我希望能够更新 jest.mock 中的查询
javascript - Next.Js 中使用 HOC 的持久布局
问题的背景
HOC
在处理Next.Js页面时,一种常见的做法是使用HOC
(Higher-Order Component) 来避免重新键入页面的基础。
例如,身份验证HOC 可用于检查用户是否经过身份验证。根据结果,用户可以访问该页面或被重定向到登录页面。
布局
Next.Js程序员常用的另一种做法是Persistent Layouts
. 持久布局是页面上的一个“区域”,当用户浏览页面时不会重新呈现。这对 UX(用户体验)非常有用,例如,菜单的滚动位置保持在页面切换上。
一些不错的链接
CheatCode.co - 如何处理经过身份验证的路由(下面使用的 HOC)
问题
当结合这两种做法时,就会出现持久性问题。(阅读里面的评论AuthenticationRoute.js
这是一个非常简单的index.js
布局Layout.js
最后是 HOCAuthenticationRoute.js
没有 HOC
index.js
当不调用authenticatedRoute时,这在里面工作:
所以我的猜测是 authenticatedRoute 应该返回别的东西return <Component {...this.props} />;
next.js - [参数] 可以动态插入到 Next.js 中的路径中吗?
我在尝试使用[params]
/时遇到问题:params
。
我正在使用的路径的结构将始终如下:
console/sites/[siteId]/possibly-another-directory/page
.
console/sites
我可以basePath
在next.config.js中设置的部分,但[siteId]
我宁愿不必手动添加到每个路径,以免以console/sites/possibly-another-directory/page
. 是否有一个地方我可以设置它,以便它包含在我从我的网站链接到的每个路径中?
FWIW,我尝试将我设置basePath
为/console/sites/:siteId
但:siteId
被读取为文字值。
javascript - 带有用户输入 URL 的 Next.js 动态路由
我正在使用 Next.js 路由器根据 URL slug 启用不同的仪表板。这在单击带有链接的按钮时有效,因为链接将信息传递给 Next.js 路由器,但当 URL 直接输入浏览器时它不起作用(即如果用户刷新页面则不起作用,或者直接使用 slug 键入 URL)。因此,虽然我可以在按下链接时使用动态路由,但如何在未按下链接时启用动态路由?
相关代码如下。非常感谢
next.js - 如何根据当前动态页面使 Next.js 链接动态化?
我正在使用 Next.js 构建 LMS。到目前为止,我的项目结构是localhost/courses/1
. 每门课程将有 7 页。仪表板、作业、TestAndQuizzes、成绩簿、资源、公告和名册。我已经准备好所有组件和页面。因此,如果我手动转到localhost/courses/1/assignments
orlocalhost/courses/1323/roster
等,则可以正常工作。
我想要做的是:当我点击作业链接时,我需要转到该特定课程的作业页面 - 类似于localhost/courses/1/assignments
. 目前,我已将 URL 硬编码为,/courses/1/[page]
因此如果我单击 assignments 它将转到,localhost/courses/1/assignment
或者如果我单击 roster 它将转到localhost/courses/1/roster
.
如何使该路线动态化,以便当用户单击课程中的一个选项卡时,它会将他们带到该特定课程的该页面?
我抬头看了看next/link
,next/router
但我仍然无法做到这一点。有什么帮助吗?
编辑:这是我的文件夹结构:
就像我上面说的,现在我已经使用链接来发送某人到/courses/1/assignment
例如。
如果您想查看它托管在My app的网站。
reactjs - 使用国际化时如何在 Nextjs 中处理 router.back?
我正在尝试使用router.back()
,但我也在使用 i18n 本地化。
我从主页开始,"localhost/"
然后导航到
"localhost/auth/sign-in"
.
现在更改语言(有其特定路线)"localhost/firstLang/auth/sign-in"
,然后再次更改为另一种语言"localhost/secondLang/auth/sign-in"
。
当我想导航回使用时,router.back()
我想导航到"localhost/secondLang"
not to "localhost/firstLang/auth/sign-in"
。