首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Next.js Router.push()自动重新加载页面

Next.js Router.push()自动重新加载页面
EN

Stack Overflow用户
提问于 2020-04-10 04:53:20
回答 4查看 13.9K关注 0票数 6

有没有一种方法可以在不使用Next.js重新加载页面的情况下执行Router.push()?

我使用一个基于url的...all.js主文件来呈现不同的组件,但我希望能够在它们之间移动,而不会触发整个页面重新加载-这是一个多步骤的表单。

换句话说,我希望能够通过将URL从' form /1‘更新为'form/2’来在表单的各个步骤之间移动。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-04-10 05:19:54

如果不刷新页面,则将选项shallow添加为true

代码语言:javascript
运行
复制
router.push('/?step=2', null, { shallow: true })
票数 16
EN

Stack Overflow用户

发布于 2021-02-03 04:34:50

This page has more on router

代码语言:javascript
运行
复制
router.push(url, as, options)

url -要导航到的URL

as -将在浏览器中显示的URL的可选装饰器。在Next.js 9.5.3之前,这是用于动态路由的,请查看以前的文档以了解它是如何工作的

options -具有以下配置选项的可选对象:

浅:在不重新运行getStaticProps、getServerSideProps或getInitialProps的情况下更新当前页面的路径。缺省值为false

您不需要对外部URL使用router.push。window.location更适合于这些情况。

票数 0
EN

Stack Overflow用户

发布于 2021-05-19 06:31:36

这个页面首先出现在Next.js和“页面重载”上。为了节省其他人的故障排除时间,请考虑以下代码:

代码语言:javascript
运行
复制
router.push({query: {page: 1}}, undefined, { shallow: true });

似乎有一些Next.JS的配置可以使页面重新加载,即使查询与之前相同,这是一种通向无限页面重新加载的简单方法。此外,除非您显式指定路径名,否则浏览器也会重新加载。我在我的服务器上看到了这种行为,但在我的笔记本电脑上看不到,两者都运行Next.js 10.1.3。据我所知,唯一的区别是我的笔记本电脑上没有设置基本URL,而服务器上确实有一个基本URL。这解决了这个问题:

代码语言:javascript
运行
复制
let routerOpts = {page: 1};
if (!_.isEqual(routerOpts, router.query)) 
  router.push({pathname: router.pathname, query: routerOpts}, undefined, { shallow: true });

据我所知,“浅”没有区别,这也很好用:

代码语言:javascript
运行
复制
let routerOpts = {page: 1};
if (!_.isEqual(routerOpts, router.query)) router.push({pathname: router.pathname, query: routerOpts})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61130038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档