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

React嵌套路由中Sale组件不显示及参数获取问题求助

问题分析与解决

你的Sale组件无法显示、点击跳转无反应,核心原因是路由结构错误和链接路径不规范,以下是具体修复步骤,同时确保Sale组件能正确获取图书title和id:


1. 修复App.js的路由嵌套错误

你的/dashboard路由和books路由未正确嵌套在<Routes>标签内,这会导致路由匹配失效,修正后的路由结构如下:

// App.js 修正后代码
<Routes>
  <Route path="/" element={<Navigate to="/login" replace />} />
  <Route path="/login" element={<Login />} />
  <Route path="/dashboard" element={<Layout component={Dashboard} />} />
  {/* 将books路由移入Routes内部,与dashboard同级 */}
  <Route path="/books">
    <Route index element={<Layout component={Dashboard} />} />
    <Route path=":title/:id">
      <Route index element={<Layout component={BookDetail} />} />
      <Route path="sale" element={<Layout component={SaleStore} />} />
    </Route>
  </Route>
</Routes>

2. 修正Dashboard中的Link路径

当前Dashboard里的Link路径是相对路径,但如果Dashboard是从/dashboard路由访问的,必须使用绝对路径才能正确跳转到/books/:title/:id:

// Dashboard 中Link修正
<Link to={`/books/${book.title}/${book.id}`}>
  <button type="submit" className="btn custome-btn purple-active-ghost w-100">
    {book.title}
  </button>
</Link>

注意:如果book.title包含斜杠等特殊字符,会破坏路由结构,建议用encodeURIComponent编码:to={/books/${encodeURIComponent(book.title)}/${book.id}},在组件中用decodeURIComponent(title)解码。

3. 让SaleStore组件获取路由参数

在SaleStore组件中,通过useParams()直接提取title和id:

// SaleStore.js 核心代码
import { useParams } from 'react-router-dom';

const SaleStore = () => {
  const { title, id } = useParams();
  // 若之前做了编码,需解码
  // const decodedTitle = decodeURIComponent(title);
  
  console.log("图书标题:", title);
  console.log("图书ID:", id);
  
  // 组件其他逻辑
  return (
    // 组件内容
  );
};

export default SaleStore;

4. 检查Layout组件的渲染逻辑

确保你的Layout组件正确渲染传入的子组件,示例实现如下:

// Layout.js 示例代码
const Layout = ({ component: Component }) => {
  return (
    <div className="layout-container">
      {/* 布局头部、侧边栏等固定内容 */}
      <Component />
      {/* 布局底部 */}
    </div>
  );
};

export default Layout;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:05:08