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

React中如何在ActiveSearch组件获取NavLink选中项的label值

解决NavLink跳转后传递并获取下拉项label值的问题

这里提供两种常用的实现方式,根据你的需求选择即可:

方法一:通过URL查询参数传递(适合需要在URL中可见的场景)

这种方式会把label值附加到URL上,刷新页面后数据不会丢失。

修改NavLink的跳转配置

在Header组件的NavLink中,将label作为查询参数传入:

<NavLink 
  to={{
    pathname: '/budget/active-search',
    // 用encodeURIComponent处理特殊字符,避免URL解析异常
    search: `?label=${encodeURIComponent(item.label)}`
  }}
>
  {item.label}
</NavLink>

在ActiveSearch组件中获取参数

使用react-router-dom提供的useSearchParams钩子读取参数:

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

function ActiveSearch() {
  const [searchParams] = useSearchParams();
  // 获取label参数,若不存在则返回默认值
  const selectedLabel = searchParams.get('label') || '未选择标签';

  return (
    <div>
      <h2>当前选中标签:{selectedLabel}</h2>
      {/* 组件其他内容 */}
    </div>
  );
}

方法二:通过路由state传递(适合不需要暴露在URL的场景)

这种方式的参数不会出现在URL中,但刷新页面后state数据会丢失(仅存在内存中)。

修改NavLink的跳转配置

在to对象中添加state属性携带label值:

<NavLink 
  to={{
    pathname: '/budget/active-search',
    state: { label: item.label }
  }}
>
  {item.label}
</NavLink>

在ActiveSearch组件中获取state

使用useLocation钩子读取路由携带的state:

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

function ActiveSearch() {
  const location = useLocation();
  // 用可选链操作符避免页面刷新后state不存在导致的报错
  const selectedLabel = location.state?.label || '未选择标签';

  return (
    <div>
      <h2>当前选中标签:{selectedLabel}</h2>
      {/* 组件其他内容 */}
    </div>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:19:55