news 2026/5/2 17:33:42

Next-4-路由导航

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Next-4-路由导航

客户端路由导航方式

Link 组件

通过Next.js提供的<Link>组件实现页面跳转,避免整页刷新,提升用户体验。需从next/link导入,例如:

importLinkfrom"next/link";exportdefaultfunctionHomePage(){return(<div><Link href="/home/kun"className="cursor-pointer text-blue-500">跳转kun</Link><br/><Link href={{pathname:"/home/me",query:{name:["kun",'kun2']}}}className="cursor-pointer text-red-500">跳转me,并携带参数</Link><br/><Link href={{pathname:"/home/me",}}prefetch={true}className="cursor-pointer text-red-500">预获取页面</Link><br/><Link href={{pathname:"/home/me"}}scroll={true}className="cursor-pointer text-blue-500">保持当前滚动位置</Link><br/><Link href={{pathname:"/home/me"}}replace={true}className="cursor-pointer text-red-500">替换当前路由</Link></div>)}

接收参数(useSearchParams ):

'use client'importLinkfrom"next/link";import{useSearchParams}from"next/navigation";exportdefaultfunctionMePage(){// 获取路由传递的参数constsearchParams=useSearchParams()constname=searchParams.get("name")constnames=searchParams.getAll("name")console.log('传递的参数:',name)console.log('传递的多个参数:',names)return(<div><h1>Me</h1><Link href="/home/kun">Kun</Link></div>)}
useRouter Hook

useRouter 是 Next.js 提供的 React Hook,用于访问路由对象,实现客户端导航、获取路由参数、查询字符串等操作。需从 next/router 导入。

方法作用一行代码示例
push(url)新增一条历史记录并跳转router.push('/dashboard')
replace(url)替换当前历史记录(不留“后退”)router.replace('/login')
back()等价于浏览器后退按钮router.back()
forward()等价于浏览器前进按钮router.forward()
refresh()重新请求当前页面数据(不闪屏)router.refresh()
prefetch(url)静默预拉取目标页面(提升切页速度)router.prefetch('/detail')
小栗子
<button onClick={()=>router.push({pathname:'/product/[id]',query:{id:100,ref:'tw'}})}>查看商品</button>

路由预加载策略

自动预加载
<Link>组件默认预加载视口内链接资源,通过prefetch={false}可禁用。

手动预加载
通过router.prefetch()主动预加载目标路由:

useEffect(()=>{router.prefetch('/settings');},[]);

动态路由导航

模板字符串路径
动态路由参数可通过模板字符串传递:

router.push(`/posts/${postId}`);
importLinkfrom"next/link"exportdefaultfunctionPage(){constarr=[1,2,3,4,5]returnarr.map((item)=>(<Link key={item}href={`/page/${item}`}>动态渲染的Link</Link>))}

对象形式路径
支持传递pathnamequery对象,适用于复杂参数:

router.push({pathname:'/search',query:{keyword:'nextjs'}});

路由事件监听

通过router.events监听路由变化事件:

router.events.on('routeChangeStart', (url) => { console.log('路由开始变化:', url); });

服务端路由导航

redirect函数
在服务端组件或Server Actions中使用(HTTP 307):

import{redirect}from'next/navigation';redirect('/login');

permanentRedirect
适用于永久重定向场景(HTTP 308):

permanentRedirect('/new-url');
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 8:00:40

嵌入式工程师必备:Keil5下载与MDK环境搭建完整示例

从零开始搭建Keil5开发环境&#xff1a;嵌入式工程师的实战指南 你有没有遇到过这样的场景&#xff1f;刚接手一个STM32项目&#xff0c;兴冲冲地打开电脑准备写代码&#xff0c;结果一搜“keil5下载”跳出来十几个网站&#xff0c;有的要注册、有的带病毒提示、还有的根本打不…

作者头像 李华
网站建设 2026/4/24 15:52:04

开源神器GPT-SoVITS:零基础实现高质量语音合成

开源神器GPT-SoVITS&#xff1a;零基础实现高质量语音合成 在短视频、有声书和虚拟主播席卷内容生态的今天&#xff0c;一个现实问题摆在许多创作者面前&#xff1a;如何低成本、高效率地生成自然流畅、带有个人特色的AI语音&#xff1f;过去&#xff0c;这需要专业的录音设备、…

作者头像 李华
网站建设 2026/4/25 15:06:22

群智协作:大语言模型驱动下的多智能体协同

作者&#xff1a;黄兆康 周锐楷 张 海 郝天永在数字化浪潮席卷全球的今天&#xff0c;人工智能领域正不断突破边界。当单个智能体的能力逐渐触达瓶颈&#xff0c;多智能体协同恰似一把 “智能密钥”&#xff0c;解开了更复杂任务的解决密码。尤其是大语言模型加持下的…

作者头像 李华
网站建设 2026/4/30 20:10:53

NVIDIA显卡性能优化终极指南:深度解锁隐藏设置

NVIDIA显卡性能优化终极指南&#xff1a;深度解锁隐藏设置 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏画面卡顿、撕裂而烦恼吗&#xff1f;&#x1f914; NVIDIA Profile Inspector就是你…

作者头像 李华
网站建设 2026/4/25 9:39:16

40、基础测度理论与严格分离证明详解

基础测度理论与严格分离证明详解 1. 基础测度理论 1.1 零测度集的引入 在研究实数集的子集时,我们常常需要对集合的大小或测度有一个精确的概念。假设我们有两个实数集的子集 (S_1) 和 (S_2),且 (S_2 \subseteq S_1),显然 (S_2) 不会比 (S_1) 大,我们需要明确在什么情况…

作者头像 李华
网站建设 2026/4/28 6:21:42

42、深入探究特定结构与相关证明及研究进展

深入探究特定结构与相关证明及研究进展 1. 特定结构下的证明基础 在特定的结构研究中,我们先聚焦于构建的点 (w) 位于线段 (L(y; z)) 上的情况。此时,考虑通过点 (y) 和 (z) 的椭球体 (E\subseteq r_{0,\delta}),这个椭球体是依据相关引理得到的。 若该椭球体退化为一维或…

作者头像 李华