【问题标题】:nextjs get back to page before 404 from page after 404nextjs 从 404 之后的页面返回到 404 之前的页面
【发布时间】:2020-09-07 12:27:45
【问题描述】:
我使用 nextjs 创建了一个 404 页面,它无需任何配置即可工作并显示我的自定义 404 页面。
我在此页面中有一个链接,可将用户重定向到另一个页面。在这个新页面上,如果用户单击 back 我想将它们发送回 404 之前的页面。
我看到了这个link,但我没有使用router.push。
我该怎么做?
page1>404page>page2
通过单击 page2 上的后退按钮,我想转到 page1 而不是 404page。
谢谢
【问题讨论】:
标签:
javascript
reactjs
next.js
【解决方案1】:
为了实现你想要的,你可以使用router.replace。
根据文档:
类似于 next/link 中的 replace 属性,router.replace 将阻止向历史堆栈添加新的 URL 条目。
要实际获取(和使用)路由器对象,您可以使用 NextJS 提供的 useRouter 对象。因此,您的 404 页面可能如下所示:
import { useRouter } from "next/router";
export default () => {
const router = useRouter();
return (
<div>
<h3>404</h3>
<h2>
Try go here instead:{" "}
<span onClick={() => router.replace("/page2")}>Go page2</span>
</h2>
</div>
);
};
这样,通过转到 page2,您可以将历史堆栈中的 404 条目替换为 page2 url,这会给出您期望的行为 (working example here)