reactjs - 历史上的 React Router RouteParams

标签 reactjs typescript react-router-dom

我正在使用 react 17.0.2 并定义了这样的路由:

export const PATH = {
  editProduct: '/edit-product/:productId'
}
export const routes = [
  {
    path: PATH.editProduct,
    render: (props) => <Product {...props}/>
  }
]
export const useRoutes = () => ({ PATH, routes });

然后路由与“react-router-dom”版本一起使用:^5.2.0

以前一些没有路由参数的路径使用 history.push(PATH.somePath); 并且它有效,但我想在某些组件中使用 react routerParams。

喜欢:

history.push({pathname: PATH.editProduct, routerParam: {productId: "2"} });

以前带有路由参数的路径是通过不使用 PATH 变量传递的,而是键入像 history.push('/edit-product/' + productId); 这样的字符串我想重用PATH 变量,但我不知道如何巧妙地实现它。

如果我在 history.push 方法中使用 PATH.editProduct,它会像/edit-product/:productId 一样放置路由参数,这不是我想要的行为。历史上有routeparams的解析方法吗?

最佳答案

react-router-dom 中有generatePath util。

import { generatePath } from "react-router-dom";

const path = generatePath(PATH.editProduct, {
  productId: 1
});

history.push(path);

https://reactrouter.com/web/api/generatePath

关于reactjs - 历史上的 React Router RouteParams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68903663/

相关文章:

javascript - 如何在 react router dom v4 的嵌套路由中获取参数?

reactjs - Redux Form 6.1.1 - 模糊验证不适用于 react native

json - Angular 4 HTTP 不返回 JSON 正文

javascript - 开 Jest : Cannot spy the property because it is not a function; undefined given instead

typescript - Angular 2 - 手动实例化 (Http) 服务

javascript - TypeScript Store Parse 查询结果

reactjs - 我如何使我的仪表板 protected 组件(只有注册用户才能访问)。以及仪表板导航如何工作

javascript - 使用react-router加载器,如果在加载器中完成的提取导致401,我如何重定向到登录路由?

javascript - 使用node js和react js的文件加载问题

javascript - 如何在 expo 中添加 Agora.io Android sdk?