【发布时间】:2021-03-10 04:24:07
【问题描述】:
我正在使用带有 TypeScript 的 React Router。这里有两条路线,分别是/和/pages/id。
class MyComponent extends React.Component
{
render()
{
return <BrowserRouter>
<div>
<Route exact path='/' children={
() =>
<TopPage />} />
<Route exact path='/pages/:id' children={
(props: RouteComponentProps<{id: string}>) =>{
console.log(props)
return <IndividualPage match={props.match} />}} />
</div>
</BrowserRouter>
}
}
我希望,因为我的Routes 是exact:
- 当我访问
/时,只呈现TopPage组件 - 当我访问
/pages/1时,只呈现IndividualPage组件 - 当我访问
/no-pages时,什么都没有呈现
但是,我观察到:
- 当我访问
/或/no-pages时,IndividualPage组件会以match=null呈现(导致Cannot read property 'params' of null错误) - 当我访问
/pages/1时,TopPage和IndividualPage组件都会被渲染
我做错了什么?
【问题讨论】:
-
为什么要在根目录下添加子节点?
-
“在您的根目录上添加子项”是指我的 codn 的哪一部分?我的理解是
Router应该有Routes 作为孩子,Route应该有一个函数组件(我通过函数表达式从我的类组件中创建)作为children属性。
标签: reactjs typescript react-router react-router-dom react-router-v4