Вам необходимо передать реквизиты, подобные этой читать здесь
component={props => <CourseDetail {...props} email={this.state.emailAddress} pass={this.state.password} />} />
Реквизиты, переданные компоненту courseDetails, не имеют никакого имени реквизита match
и вyour componentDidMount вы делаете это
const {match: { params }} = this.props;
Здесь совпадение будет неопределенным, поэтому вы можете получить доступ к params
Вы можете понять из этого примера
let a = {a:{b:1}}
let {x:{b,}} = a
Приведенный выше код такой же, как приведенный ниже
"use strict";
var a = {
a: {
b: 1
}
};
var b = a.x.b;
Так что в конечном итоге здесь, если во время деструктуризации, если у вас нет совпадений в качестве параметров, вы пытаетесьдля доступа
(this.props.match).params
|
|__________ This is undefined you end up `undefined.params`