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

如何在动态路由中向Card组件传递Props?

问题描述

我从JSON获取产品数组并将其存入Redux,现在想知道如何在动态路由中向Card组件传递Props。点击Home组件中产品的Link可跳转至对应产品页面,相关JSON示例及代码如下:

产品JSON示例

{
    "product": [
        {
            "id": 1,
            "image": "/assets/images/products/27672/1.jpg",
            "name": "Product 1",
            "price": "0.20",
            "category": 2
        },
        {
            "id": 2,
            "image": "/assets/images/products/27672/2.jpg",
            "name": "Product 2",
            "price": "0.1",
            "category": 3
        }
    ]
}

App组件代码

<div className="App">
  <Header />
  <Routes>
    <Route path='/' element={<Home />} />
    <Route path='/product/:id' element={<Card />} />
  </Routes>
  <Footer />
</div>

Home组件跳转Link代码

<div className="catalog_block">
   <Link to={'product/' + id}>
     <img src={image} />
    </Link>
</div>
解决方案

因为产品数据已存入Redux,可通过以下步骤为Card组件传递对应产品的Props:

1. 在Card组件中获取并匹配产品数据

借助react-router-dom的useParams钩子拿到路由参数,再从Redux中筛选出对应产品:

import { useParams } from 'react-router-dom';
import { useSelector } from 'react-redux';

const Card = () => {
  // 获取动态路由中的id参数
  const { id } = useParams();
  // 从Redux取出产品数组(路径需匹配你的Redux实际配置)
  const products = useSelector(state => state.products);
  // 匹配对应产品:注意路由id是字符串,需转数字和产品id匹配
  const targetProduct = products.find(item => item.id === Number(id));

  // 处理产品不存在的情况
  if (!targetProduct) {
    return <div>该产品不存在</div>;
  }

  // 直接使用targetProduct的属性渲染组件
  return (
    <div className="product-card">
      <img src={targetProduct.image} alt={targetProduct.name} />
      <h2>{targetProduct.name}</h2>
      <p>价格:${targetProduct.price}</p>
      <p>分类ID:{targetProduct.category}</p>
    </div>
  );
};

export default Card;

2. 关键注意点

  • Redux路径要对应:useSelector中的state.products需和你存储产品数组的state节点一致,比如实际存在state.productList下,就要改成state.productList。
  • 类型匹配:路由参数id是字符串类型,产品的id是数字,必须用Number(id)转换后再匹配,否则会因类型不匹配找不到产品。
  • 异常处理:增加产品不存在的判断,避免用户手动输入无效id时页面报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:09:22