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

如何在ReactJS/NextJS或JavaScript中拆分URL获取查询参数部分

拆分URL获取查询参数的实现方案

注意:如果你的URL是HTML转义后的格式(&被转义为&),请先做转义还原再处理:

const escapedUrl = '/search-results?query=home+floor&categories=All+Categories';
const rawUrl = escapedUrl.replaceAll('&', '&');

原生JavaScript实现

字符串直接拆分(仅需拆分路径和参数时用)

const fullUrl = '/search-results?query=home+floor&categories=All+Categories';
// 第二个参数2表示最多分割为2段,避免参数中包含?时拆分错误
const [pathPart, queryPart] = fullUrl.split('?', 2);

console.log(pathPart); // 输出:/search-results
console.log(queryPart); // 输出:query=home+floor&categories=All+Categories

标准Web API实现(需要后续解析参数时用)

// 相对路径场景
const fullUrl = '/search-results?query=home+floor&categories=All+Categories';
// 拼接当前域名构造完整URL对象,也可以直接用window.location.href获取当前页面完整地址
const urlObj = new URL(fullUrl, window.location.origin);

const pathPart = urlObj.pathname; // 路径部分
const queryPart = urlObj.search.slice(1); // 去掉search开头的?得到参数串

// 可以直接获取解析后的单个参数
const query = urlObj.searchParams.get('query'); // 输出:home floor
const categories = urlObj.searchParams.get('categories'); // 输出:All Categories

NextJS 实现

Pages Router 场景

import { useRouter } from 'next/router';

function SearchComponent() {
  const router = useRouter();
  const pathPart = router.pathname; // /search-results
  const queryPart = router.asPath.split('?', 2)[1] || ''; // 参数字符串
  
  // 也可以直接拿框架解析好的参数对象
  const { query, categories } = router.query;
  return <></>;
}

App Router 场景

客户端组件

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

function SearchComponent() {
  const pathPart = usePathname(); // /search-results
  const searchParams = useSearchParams();
  const queryPart = searchParams.toString(); // 参数字符串

  // 获取单个参数
  const query = searchParams.get('query');
  return <></>;
}

服务端组件

// app/search-results/page.js
export default function SearchPage({ searchParams }) {
  // searchParams为框架解析好的参数对象
  const queryPart = new URLSearchParams(searchParams).toString(); // 转成参数字符串
  const { query, categories } = searchParams;
  return <></>;
}

React + React Router 项目实现

import { useLocation, useSearchParams } from 'react-router-dom';

function SearchComponent() {
  const location = useLocation();
  const pathPart = location.pathname; // /search-results
  const queryPart = location.search.slice(1); // 参数字符串

  // 也可以直接拿解析好的参数
  const [searchParams] = useSearchParams();
  const query = searchParams.get('query');
  return <></>;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:09:00