news 2026/6/10 2:17:32

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/6/10 6:23:58

Proteus元件对照表完整指南:从符号到实物对应

从仿真到实物&#xff1a;Proteus元件对照实战指南你有没有过这样的经历&#xff1f;在 Proteus 里搭好了一个漂亮的电路&#xff0c;运行仿真一切正常——LED 闪烁、电机转动、液晶显示无误。信心满满地打样出 PCB&#xff0c;结果焊上去一通电&#xff0c;晶振不起振、LCD 乱…

作者头像 李华
网站建设 2026/6/10 7:41:15

STM32H7串口空闲中断与rxcpltcallback结合详解

STM32H7串口接收新境界&#xff1a;用空闲中断DMA实现变长数据零拷贝捕获你有没有遇到过这样的场景&#xff1f;接收一个不定长的Modbus RTU帧&#xff0c;前面刚发完CRC校验&#xff0c;后面设备就停了——但你的程序还在等“第10个字节”才能触发回调。音频模块以115200波特率…

作者头像 李华
网站建设 2026/6/10 7:43:01

如何提升GPT-SoVITS生成语音的自然度?技巧分享

如何提升GPT-SoVITS生成语音的自然度&#xff1f;技巧分享 在短视频、虚拟主播和AI助手日益普及的今天&#xff0c;用户对合成语音的要求早已不止“能听懂”&#xff0c;而是追求“像真人”——有情感、有节奏、有个性。然而&#xff0c;大多数开源TTS系统要么需要数小时录音训…

作者头像 李华
网站建设 2026/6/10 7:42:59

GPT-SoVITS本地化部署方案:保障数据隐私安全

GPT-SoVITS本地化部署方案&#xff1a;保障数据隐私安全 在医疗报告自动播报、金融客服语音定制、个性化教育内容生成等高敏感场景中&#xff0c;如何在不泄露用户声音数据的前提下实现高质量语音合成&#xff1f;这曾是一个长期困扰AI工程团队的难题。传统的云端TTS服务虽然便…

作者头像 李华
网站建设 2026/6/10 7:43:19

GLM-4.7上线:国产开源编码大模型的新进展

12月22日&#xff0c;智谱AI发布了GLM-4.7。这不只是常规版本更新&#xff0c;而是一个信号——开源模型在编程、推理和工具调用等关键能力上有了显著进展。 距离GPT 5.2发布仅20天&#xff0c;GLM-4.7就随之而来。官方公布的测试数据显示&#xff0c;这个版本在编程、推理与智…

作者头像 李华
网站建设 2026/6/10 7:41:40

ARP协议详解:它如何工作,为何特殊

一、核心结论&#xff1a;ARP没有IP头部&#xff01;ARP的独特地位ARP Address Resolution Protocol地址解析协议关键特性&#xff1a;工作在**网络层和数据链路层之间**是连接MAC地址和IP地址的桥梁ARP帧结构&#xff1a;直接封装在以太网帧中没有IP头部&#xff01;二、ARP帧…

作者头像 李华