React 路由器不刷新页面

React router doesn't refresh page

我有两条不同的路线使用相同的组件。


    <BrowserRouter>
      <Routes>  
        <Route path="/produktai" element={<Products />}/>
        <Route path="/produktai/:productId" element={<Products />} />
      </Routes>
    </BrowserRouter>

我正在使用 Link 来自 React 在页面之间切换并从

获取 ID

    const pathname = useLocation().pathname;

休息 api。

例如,当我使用 Link 将页面从 /products 更改为 /products/2 时,url 发生了变化,但问题是页面没有按预期刷新。如果我使用带有 href 的标签,问题就解决了,因为它总是重新加载页面,这与平滑反应 Link 功能不同,但我认为这不是一个好的解决方案。

即使路由路径发生变化,您仍在渲染相同的 Products 组件。如果您需要在路径更改时 运行 一些逻辑,或者更有可能在 productId 路由参数更新时,那么您应该使用 useEffect 钩子与 productId 路由作为依赖项的参数。

示例:

const { productId } = useParams();

useEffect(() => {
  if (productId) {
    // Perform rest api call and response handling
  }
}, [productId]);