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

React中通过Link组件传递参数至其他组件失败求助

解决React路由传参问题

你的代码存在几个关键问题导致传参失败,按以下步骤修改即可解决:

1. 修复路由配置的语法错误与参数定义

App.js中的Route存在语法错误,且未定义参数占位符,修改为:

<Route path="/products_info/:name" element={<Product_info />} />

其中:name是用于接收产品名称的参数占位符。

2. 修改Productscard组件的Link传参逻辑

将Link的to属性改为带参数的动态路径,通过模板字符串传入产品名称:

<Link to={`/products_info/${props.name}`}>

另外注意你代码中的photo变量未定义,需确保它是通过props传入或有正确的赋值,比如改为props.photo。

3. 确保Product_info组件正确接收参数

确认已导入useParams钩子,否则无法获取路由参数:

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

之后params.name就能正常拿到传递过来的产品名称。

额外需求:传递更多参数(如产品描述)

如果需要同时传递产品描述等更多信息,可选择以下两种方式:

方式一:路由多参数

修改路由配置:

<Route path="/products_info/:name/:description" element={<Product_info />} />

对应修改Link:

<Link to={`/products_info/${props.name}/${props.description}`}>

在Product_info中接收多参数:

const { name, description } = useParams();

方式二:通过Link的state属性传递(参数不显示在URL)

路由配置无需修改,修改Link:

<Link 
  to="/products_info"
  state={{ name: props.name, description: props.description }}
>

在Product_info中通过useLocation接收:

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

function Product_info(props) {
  const location = useLocation();
  const { name, description } = location.state || {};

  return (
    <div className="product_info">
      <h1>{name}</h1>
      <p>{description}</p>
    </div>
  )
}

完成上述修改后,点击Productscard组件即可跳转到详情页并展示对应产品信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:10:30