我是React的初学者。我只需要在页面加载时从URL中获取路径参数。我的URL如下。
http://localhost:3000/explorer/test/111
我已经设定了路线如下,
<Route
exact path="/explorer/test/:id"
component={() => <BlockPage />}
/>
然后在<BlockPage />
组件中,我需要在组件加载时获取:id
的值,因此,我添加了以下代码段来获取id,但它给了我标题中的错误。
import React, { Component } from 'react';
import NavigationComp from './Navigation';
import { withRouter } from 'react-router-dom';
const BlockPage = () =>
<div>
<NavigationComp/>
<BlockData />
</div>
class BlockData extends Component {
componentDidMount() {
console.log(this.props.match.params.id);
}
render(){
return(.....)
}
}
export default withRouter(BlockPage);
我犯了什么错误?有人能给我解释一下吗?我的目标是从URL中获取111值到componentDidMount()
中
5条答案
按热度按时间cbwuti441#
当你想使用组件,你不需要像你的代码功能,你可以改变它像它:
或者如果你想要一个像这样的函数,使用render函数
那么在
this.props.match.params
中您可以访问您的ID。0pizxfdo2#
这是因为你的组件是ReactRouter知道的其他组件的子组件。
在上述路由定义中,反馈组件中的匹配对象不为空,但如果我们在反馈中有其他组件并试图访问它,则会出错。
bvjxkvbb3#
https://stackoverflow.com/a/57628327/12378703这个工作得很完美...试试这个
aiazj4mn4#
这解决了我的问题:
vcirk6k65#
我也遇到了同样的问题。尝试了上面所有的解决方案,但没有工作。然后我只是控制台日志
this.props
此.props中没有匹配项
它起作用了,不知道是怎么起作用的,但它起作用了。可能对其他人有帮助。