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

React中No routes matched location "/ProductList/1"警告问题排查

问题排查与修复方案

核心错误:路由未配置参数匹配

你收到的No routes matched location "/ProductList/1"警告,本质是App.js里的ProductList路由未定义带参数的路径规则。当前路由仅匹配/ProductList,但点击链接后跳转的是带分类ID的/ProductList/1,导致路由无法匹配。

修复步骤1:修改App.js路由配置

将ProductList路由改为带参数的形式,用:categoryId捕获URL中的ID:

// App.js
<Routes>
    {/* 其余路由保持不变 */}
    <Route path="/ProductList/:categoryId" element={<ProductList />} /> {/* 修改此处 */}
    <Route path="/CategoryList" element={<CategoryList />} />
</Routes>

其他潜在问题与修复

除路由外,代码中还有多处细节会导致功能异常:

1. useParams的正确使用

useParams()返回的是对象,需解构出具体参数,不能直接使用整个对象:

// ProductList.js
const { categoryId } = useParams(); // 解构获取categoryId
console.log("id-->", categoryId)
const url = `http://localhost:64082/api/products/getproductbycategoryid/${categoryId}`

2. 初始状态类型错误

你将products初始化为对象{},但后续要调用数组方法map,会触发报错,应初始化为数组[]:

// ProductList.js
const [products, SetProducts] = useState([]); // 改为数组类型

3. useEffect依赖项缺失

当前useEffect依赖数组为空,分类ID变化时不会重新请求数据,需将categoryId加入依赖:

// ProductList.js
useEffect(() => {
  fetchData()
}, [categoryId]) // 添加categoryId作为依赖

4. CategoryList中的拼写错误

渲染分类名称和描述时属性名拼写错误,会导致内容显示undefined,需修正:

// CategoryList.js
<h5 className="card-title">{category.categoryName}</h5> {/* 修正cotegoryName为categoryName */}
<p className="card-text">{truncateOverview(category.categoryDescription, 50)}</p> {/* 修正cotegoryDescription为categoryDescription */}

5. 移除无用的Router导入

CategoryList中导入了Router但未使用,可直接删除:

// CategoryList.js
import { Link } from "react-router-dom"; // 仅保留Link

修复后验证

完成上述修改后,点击分类链接会正确匹配/ProductList/1路由,ProductList组件将获取对应分类ID,调用API拉取数据并渲染表格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35