当前位置: 首页 > 知识库问答 >
问题:

next.js - 在NextJS的Link组件导航中,请教一个自动缓存问题?

吴哲
2023-08-14

演示:

sandbox地址:https://codesandbox.io/p/sandbox/pensive-mestorf-nyxpst?file=...

打开如果服务没启动,请自行启动

包含2个页面:和1个Api路由:

  • 数据获取页:/link/fetch
  • 链接导航页:/link/auto,页面链接指向:/api/time
  • 缓存刷新路由:/api/time,获取请求转向:/link/fetch

问题复现:

  • 打开页面/link/auto后,再打开开发者工具,点开查看网络,清空当前所有记录
  • 鼠标先放到页面中的链接,可以看到提示指向:/api/time,点击它页面会直接跳转到:/link/fetch
  • 而开发工具,网络中并没有/api/time这个连接的记录

我的尝试:

在link页和api页面分别都加上禁止缓存

export const dynamic = "force-dynamic";export const fetchCache = "force-no-store";export const revalidate = 0;

并重新验证

  revalidatePath("/link/fetch");  revalidatePath("/link/auto");  revalidateTag("dynamic-auto-fetch");  redirect("/link/fetch");

需求:

请问我如何在/link/auto页面中点击链接,在最终跳转到/link/fetch期间,会有一条/api/time请求记录?

共有1个答案

陈志
2023-08-14

用a标签来不用Link组件来做,用户点的时候浏览器就会发请求
或者用js手动发请求:

import { useRouter } from 'next/router';function AutoLinkPage() {  const router = useRouter();  const handleClick = async () => {    // 手动请求    await fetch('/api/time');    // 页面切换    router.push('/link/fetch');  };  return (    <div>      <button onClick={handleClick}>点击跳转</button>    </div>  );}export default AutoLinkPage;
 类似资料:
  • 实际上,我正在我的应用程序中使用新的架构组件,并且我已经设置了导航组件。我有一个导航抽屉,我想用它。我已经设置好了,但我面临一些问题: 1-抽屉不会自动关闭。菜单正常工作并导航到正确的位置,但导航后不会关闭。我必须添加一个目的地ChangedListener才能自己关闭它。 在代码实验室里,抽屉自动关闭,我真的不明白为什么。 2-向上按钮打开抽屉。当我导航到非顶级片段时,菜单图标变为向上箭头,但当

  • 我正在将我的应用程序更新为导航架构组件,我发现它在替换导航抽屉中可见的片段时存在延迟,无法顺利关闭。 直到现在,我一直在遵循这种方法: https://vikrammnit.wordpress.com/2016/03/28/facing-navigation-drawer-item-onclick-lag/ 所以我在中导航而不是在中导航以避免故障。 这是一个非常常见的问题,但它又回来了。使用导航组

  • 新手一个,最近在学习nextjs14,基于App Router做一个小的笔记本demo. 大致想要的效果如下: 简介: 这里面有两个组件,一个是SideBarNoteList,控制笔记列表,一个是Editor,书写内容,提交内容。Editor的父组件是动态路的page.tsx。笔记的数据源只是一个静态json数据,想简单的模拟一下。结构大致如此: 我的需求也很简单,就是在提交笔记表单后,actio

  • 导航组件说明 组件 说明 最低版本 navigator 页面链接 1.0.0 functional-page-navigator 用于跳转插件功能页 不支持 navigator 属性 类型 默认值 必填 说明 最低版本 url string 否 当前小程序内的跳转链接 open-type navigate 否 跳转方式 hover-class string navigator-hover 否 指定

  • 我正在一个新的Android应用程序上使用导航组件,但我不知道怎么做 首先,我有我的主活动,我有main_navigation_graph 主要活动 NavHostFragment main_navigation_graph里面有3个碎片 这里一切都很好。问题是当我到达最后一个片段时,因为在这个片段上,我想根据BottomNavigationView输入(暂时)显示一些子片段(在新的NavHost

  • 我一直在遵循导航架构组件中的文档,以了解这个新的导航系统是如何工作的。 要从一个屏幕到另一个屏幕进行/返回,您需要一个实现接口的组件。 NavHost是一个空视图,当用户在应用程序中导航时,目的地会随之交换。 但是,似乎目前只有片段实现了< code>NavHost 导航架构组件的默认NavHost实现是NavHostFragment。 所以,我的问题是: > < li> 即使我有一个可以用< c