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

React Router问题:点击按钮切换/quiz路由后页面空白报错

解决方案

1. 修正App.jsx的路由配置

先把App里注释掉的/quiz路由恢复,让路由系统能匹配到/quiz路径:

<Router>
  <Routes>
    <Route path="/" element={<Fetch />} />
    <Route path="/quiz" element={<Quiz />} /> {/* 取消注释该行 */}
  </Routes>
</Router>

2. 移除Fetch.jsx中的冗余嵌套路由

当路径切换到/quiz时,App的路由会直接渲染Quiz组件,此时Fetch组件已经被卸载,里面的<Routes>部分完全无效,直接删除即可:
修改后的Fetch.jsx代码片段:

<>
  {[...new Set(catData.map((c) => c.category))].sort().map((cat) => (
    <div key={cat}>
      <Link to="/quiz" >
        <p onClick={() => handleClick(cat)}>{cat}</p>
      </Link>
    </div>
  ))}
</>

3. 可选:传递分类数据到Quiz组件

如果需要把Fetch中选中的分类数据传给Quiz,可以通过路由状态传参:

  • 调整Fetch里的Link:
<Link to={{ pathname: "/quiz", state: { data: data } }} >
  <p onClick={() => handleClick(cat)}>{cat}</p>
</Link>
  • 在Quiz组件中获取数据:
import { useLocation } from 'react-router-dom';

function Quiz() {
  const location = useLocation();
  const data = location.state?.data;
  
  // 后续逻辑使用data即可
  return (
    // 组件内容
  );
}

问题根源

  • 之前注释了App里的/quiz路由规则,导致路由系统找不到匹配/quiz的路由,触发"No routes matched location "/quiz""错误。
  • Fetch里的嵌套路由完全无效,因为路径切换到/quiz时,Fetch组件已经被卸载,内部的路由不会被渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:14:58