To fix "typeerror: cannot read properties of undefined (reading ‘pathname’)" with React Router, we should wrap the Router
component around our app.
For instance, we write
import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter as Router, Route } from "react-router-dom";
const Main = () => <h1>Hello world</h1>;
ReactDOM.render(
<Router>
<Route path="/" component={Main} />
</Router>,
document.getElementById("app")
);
to wrap the Router
component around our Route
components.
Then we can get the pathname
property value using this.props.history.location.pathname
property in any component set as the value of the component
prop in the Route
component.
This is because the Router
component injects the history
prop into the route components.