我正在使用react-router-dom路由我的组件,并对一个路由的组件进行测试。
我的App.js
有
<Route
path="/register/:id"
render={(props) => (
<Details
{...props}/>
)}
></Route>
我试图将匹配项添加到这样的组件中
const match = {
params: {
id: "123"
}
};
Details
组件在某些函数中使用this.props.match.params.id
,我不知道这些函数的调用方式,但是出现了错误
Error: Uncaught [TypeError: Cannot read property 'id' of undefined]
当我使用
console.log(this.props.match)
我明白了
{ match: { params: { id: 'id' } } }
但是当我使用
console.log(this.props.match.params)
我得到undefined
。
更新
我认为我传递match参数的方式是错误的。在创建json对象posts
并将其传递给测试组件之前,像这样
mount(<Details {...posts}/>)
然后我改变方式
mount(<Details {...posts} match={match}>)
它有效。