无法读取 React 中未定义的属性“params”
2020-03-02
416
我是 React 新手。我尝试使用
react-router-dom
通过 URL 传递值。但无法获取参数
TypeError: Cannot read property 'params' of undefined.
我尝试了已有的解决方案但毫无作用。我犯了什么错误?有人能给我解释一下吗?提前致谢。
Main
组件:
function App() {
return (
<div className="App">
<Router>
<Switch>
<Route path="/edit/:id" component={Edit} exact={true}>
<Edit />
</Route>
</Switch>
</Router>
</div>
);
}
export default App;
Edit
组件:
class Edit extends Component {
constructor(props) {
super(props);
this.state = {
id: this.props.match.params.id
};
}
render() {
return <h2>Edit Page</h2>;
}
}
export default Edit;
3个回答
注意:
我使用
useParams
提供了答案,因为您的原始问题涉及它。除此之外,如果您必须使用类组件,通常
this.props.match.params.id
应该可以工作,因为您是通过
Route
使用组件的。
您应该在
Edit
组件中使用
useParams
,它应该是一个函数组件。
function Edit() {
const { id } = useParams();
return (
<div>{id}</div>
)
}
此外,我不知道您使用的是哪个 React Router 版本,但如果您没有使用 v6,您可能希望像这样使用 Route 部分:
<Router>
<Switch>
<Route path="/edit/:id" component={Edit} exact />
</Switch>
</Router>
devserkan
2020-03-02
试试这个 -
import { withRouter } from 'react-router-dom';
class Edit extends Component {
constructor(props) {
super(props);
this.state = {
id: this.props.match.params.id
};
}
render() {
return <h2>Edit Page</h2>;
}
}
export default withRouter(Edit);
Yash
2020-03-02
需要检查你的反应版本,因为你的代码在我的系统中运行良好 - 编辑了你的编辑组件
return (
<>
<h2>Edit Page</h2>
{this.state.id}
</>
);
访问的网址 - http://localhost:3000/edit/:2
结果图像
Ravi
2020-03-02