You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS 13.4.9(App Router)按钮跳转动态路由的实现方法

在Next.js 13.4.9(App Router)中实现动态路由跳转

App Router 下的 useRouter 确实只支持字符串路径跳转,没法像 Page Router 那样传路由对象。下面是针对你的三级动态路由结构的具体跳转实现方案:

1. 基础导入

首先需要在客户端组件中导入 useRouter(必须添加 'use client' 指令):

'use client';
import { useRouter } from 'next/navigation';

2. 跳转到顶层动态路由(仅 [division] 层级)

直接拼接目标路径字符串即可:

const router = useRouter();

const navigateToDivision = () => {
  router.push('/northwest'); // 替换为你需要的division值
};

<button onClick={navigateToDivision}>跳转到西北赛区</button>

3. 跳转到二级动态路由([division]/[team])

拼接两个动态段的完整路径:

const navigateToTeam = () => {
  router.push('/northwest/blazers'); // 替换为实际的division和team值
};

<button onClick={navigateToTeam}>跳转到开拓者队</button>

4. 跳转到三级动态路由([division]/[team]/[player])

拼接三个动态段的完整路径:

const navigateToPlayer = () => {
  router.push('/northwest/blazers/lillard'); // 替换为实际的division、team、player值
};

<button onClick={navigateToPlayer}>跳转到利拉德页面</button>

5. 基于当前路由的嵌套跳转

如果需要在现有路由基础上跳转(比如当前在 /northwest,要跳转到同赛区的另一支球队),可以结合 usePathname 获取当前路径再拼接:

'use client';
import { useRouter, usePathname } from 'next/navigation';

const router = useRouter();
const currentPath = usePathname();

const navigateToAnotherTeam = () => {
  router.push(`${currentPath}/rockets`); // 在当前路径后追加team段
};

<button onClick={navigateToAnotherTeam}>跳转到火箭队</button>

6. 动态参数跳转

如果路由参数来自状态或接口数据,直接用模板字符串拼接即可:

'use client';
import { useState } from 'react';
import { useRouter } from 'next/navigation';

const router = useRouter();
const [selectedDivision, setSelectedDivision] = useState('southwest');
const [selectedTeam, setSelectedTeam] = useState('mavericks');

const navigateToDynamicRoute = () => {
  router.push(`/${selectedDivision}/${selectedTeam}`);
};

<button onClick={navigateToDynamicRoute}>跳转到选中的球队</button>

核心规则:App Router 的 push 方法只接受完整的字符串路径,你需要手动把各个动态路由段拼接成合法的路径字符串,不管是顶层还是深层路由都遵循这个逻辑。

内容的提问来源于stack exchange,提问作者DomainSoil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:55:19