news 2026/2/10 4:38:40

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/2/6 16:10:30

如何利用GPT-SoVITS打造自己的数字人声音?

如何利用 GPT-SoVITS 打造自己的数字人声音 在虚拟主播直播间里&#xff0c;那个语调自然、情感丰富的“AI自己”正在用你熟悉的声音讲述故事&#xff1b;有声书平台自动为你录制的章节&#xff0c;听起来就像你亲自朗读的一样。这些不再是科幻场景——如今&#xff0c;只需几…

作者头像 李华
网站建设 2026/2/9 17:43:59

从零实现:工业机器人控制器STLink驱动安装流程

从零搭建工业机器人控制器调试环境&#xff1a;STLink驱动安装实战指南 在工业自动化产线中&#xff0c;一台六轴机械臂突然停机&#xff0c;工程师紧急插上STLink准备读取故障日志&#xff0c;却发现PC端毫无反应——设备管理器里赫然显示“未知设备”。这种场景在嵌入式开发…

作者头像 李华
网站建设 2026/2/8 2:34:48

45、软件性能优化与探索性测试指南

软件性能优化与探索性测试指南 在软件开发过程中,性能优化和软件测试是确保软件质量和用户体验的关键环节。本文将深入探讨软件性能优化的相关要点,以及探索性测试的方法和工具。 1. 响应性与性能故事 在软件开发中,操作开始到接收反馈之间的可接受延迟以及所需的反馈类型…

作者头像 李华
网站建设 2026/2/8 1:46:28

STM32软件模拟I2C时序完整示例

从零实现STM32软件模拟I2C&#xff1a;不只是“能用”&#xff0c;更要懂原理在嵌入式开发的日常中&#xff0c;你是否遇到过这样的窘境&#xff1f;项目快收尾了&#xff0c;突然发现要用的I2C接口已经被另一个传感器占用了&#xff1b;或者选型时图便宜用了个LQFP48封装的STM…

作者头像 李华
网站建设 2026/2/3 13:24:31

Keil4安装详细流程:入门级讲解

从零搭建Keil4开发环境&#xff1a;一次成功的安装与调试实战指南 你是不是也曾在搜索“keil4安装教程”时&#xff0c;被一堆残缺不全、步骤跳跃的博客搞得焦头烂额&#xff1f;点了半天注册机生成LIC&#xff0c;结果一启动软件就闪退&#xff1b;明明插了ST-Link&#xff0…

作者头像 李华
网站建设 2026/2/7 18:39:23

38、时变系统框架:综合与分析

时变系统框架:综合与分析 1. 多维系统的平衡截断模型降阶 在多维系统中,对平衡稳定的 NMD 系统实现进行截断,会得到一个低维的平衡稳定实现。这可以通过考虑系统的 Lyapunov 不等式轻松看出。下面给出多维系统的平衡截断模型降阶误差界定理。 - 定理 :假设 $(A_r; B_r…

作者头像 李华