React Router v6 和 ow Params 不像 v5 那样工作

Posted

技术标签:

【中文标题】React Router v6 和 ow Params 不像 v5 那样工作【英文标题】:React Router v6 and ownParams doesnt work like v5 【发布时间】:2022-01-20 21:39:51 【问题描述】:

您好,在 react router dom v5 中,我可以在 redux 中获取参数。示例代码如下:

1-传递参数

<Route path="/saveproduct/:productId" component=AddOrUpdateProduct />

2- 在 redux 中获取参数。我可以在 ownProps 中获取 productId

function mapStateToProps(state, ownProps) ...

但是当我在 v6 中调用路由时,我无法在 ownProps 中获取 productId

【问题讨论】:

【参考方案1】:

首先,在 react-router-dom v6 中,您应该像元素一样将组件传递给 Route。见docs。

<Route path="/saveproduct/:productId" element= <AddOrUpdateProduct />  />

第二,

react-router-dom v6 通过 element 属性渲染的路由组件不接收路由属性

见question。这里不需要 Redux。只需使用参数反应钩子

const  productId  = useParams();

【讨论】:

但是我需要先从 api 获取数据然后返回到页面中? 如果在加载该组件时 Redux 存储中没有必要的数据,则必须从 API 请求。继续使用 Redux 存储 API 数据,但不要存储 URL 参数。 好的,但是我什么时候应该调用 api?使用效果如何?作为回报,我将参数传递给另一个组件。 是的,最好的做法是 useEffect() 没有 deps。 ***.com/questions/53219113/…【参考方案2】:

我是 react 新手,我需要一天时间。但最后我找到了解决方案。我不确定这是最佳做法,但现在对我来说很有意义。检查链接以获取解决方案。

https://youtu.be/qdCHEUaFhBk 还要感谢@kupp

【讨论】:

以上是关于React Router v6 和 ow Params 不像 v5 那样工作的主要内容,如果未能解决你的问题,请参考以下文章

react-router-dom v5和react-router-dom v6区别

2021 react-router v6 快速入门

React-router v6 该怎么用?

react-router路由之routerRender方法(v5 v6)

react-router v6新特性

React Router(react-router-dom V6 整理)