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

Next.js 13(App目录)如何携带查询参数跳转新页面

在Next.js App Router中使用useRouter传递查询参数的正确方式

App Router 里的 useRouter(来自next/navigation)和 Pages Router 的 API 存在差异,它的push方法不支持通过第二个参数传入query对象来生成查询参数,你需要手动构建带查询参数的完整 URL。

推荐用URLSearchParams来处理,它会自动帮你处理特殊字符的编码(比如示例里的空格),避免出现 URL 格式问题:

import { useRouter } from "next/navigation";

const YourComponent = () => {
  const router = useRouter();

  const goToBlah = () => {
    const q = {
      foo: "red cat",
      bar: true
    };

    const searchParams = new URLSearchParams(q);
    const targetUrl = `/blah?${searchParams.toString()}`;

    router.push(targetUrl);
  };

  return <button onClick={goToBlah}>跳转至/blah</button>;
};

export default YourComponent;

如果参数结构简单,也可以手动拼接 URL,但记得用encodeURIComponent处理包含特殊字符的参数值:

const targetUrl = `/blah?foo=${encodeURIComponent("red cat")}&bar=true`;
router.push(targetUrl);

需要注意的是,App Router 中router.push的第二个参数是用于控制浏览器历史记录的选项(比如{ scroll: false }),不是用来传递查询参数的,这和 Pages Router 的用法完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:35:00