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

React Router嵌套路由:如何让商品详情页独立渲染而非在父组件内?

解决方法

要让SelectedProduct组件完全独立渲染(而非嵌套在Products组件内),只需完成以下两处修改:

1. 重构路由结构

把商品详情路由从/products的嵌套子路由改为同级独立路由。这样当访问/products/:productId时,React Router会直接渲染SelectedProduct,不会加载父组件Products。

修改后的路由配置:

<BrowserRouter>
  <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/products" element={<Products />} />
    <Route path="/products/:productId" element={<SelectedProduct />} />
  </Routes>
</BrowserRouter>

2. 删除Products组件中的<Outlet />

由于不再需要在Products内部渲染子路由内容,直接移除组件里的<Outlet />标签即可。

修改后的Products组件代码:

return (
  <div className="full-products-container">
    <div className="displayed-products-container">
      {productsToDisplay.map((product) => (
        <Link
          to={`/products/${product.id}`}
          key={product.id}
          className="product-box"
        >
          <img
            src={product.image}
            className="product-image-displayed"
          />
          <div className="product-name">{product.name}</div>
          <div className="product-price">${formatNumber(product.price)}</div>
        </Link>
      ))}
    </div>
    {/* 已移除<Outlet /> */}
  </div>
);

完成上述修改后,点击商品链接时,页面会完全切换到SelectedProduct的内容,不再与Products的商品列表嵌套显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:45:36