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

如何使用useParams获取React路由选中条目的对应正确数据

实现详情页仅展示对应ID条目的方案

问题根因

  1. 现有代码中过滤匹配id的filter逻辑被注释,所以会遍历全部条目渲染
  2. useParams()返回的路由参数为字符串类型,若接口返回的closetItems中id为数字类型,直接用===判断会因类型不匹配导致过滤失效

可直接复用的修改后代码

const ExploreDetails = ({ closetItems, setClosetItems }) => {
  const { id } = useParams();
  // 对齐id类型后查找唯一匹配条目,find方法性能优于filter
  const targetItem = closetItems.find(item => item.id === Number(id));

  // 边界情况处理:避免数据未加载/id无效时页面报错
  if (!targetItem) return <div>数据加载中或对应条目不存在</div>;

  return (
    <div>
      <h2>Name: {targetItem.name}</h2>
      <h4>Category: {targetItem.email}</h4>
    </div>
  )
}

逻辑说明

  • 因为id是条目唯一标识,用Array.find()匹配只需要遍历到符合条件的第一条就会终止,无需像filter一样遍历整个数组再map渲染,性能更优
  • 若你接口返回的id本身为字符串类型,可删除Number()转换逻辑,直接写item.id === id即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:06:03