Провел ряд тестов "в поисках history"...
Если делать так
app.js
import React from 'react'
import {
BrowserRouter,
Route,
Switch
} from 'react-router-dom'
import Home from './home'
import Test from './test'
import './app.css';
class App extends React.Component {
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/test' component={Test} />
</Switch>
</BrowserRouter>
)
}
}
export default App;
home.js
const Home = (props) => {
console.log(props)
function test() {
alert('Ok')
}
return (
<button onClick={test}>Go</button>
)
}
export default Home
То history в props есть и можно делать
history.push('/test')
У нас же используется такой вариант роутинга
app.js
import React from 'react'
import {
BrowserRouter,
Route,
Switch
} from 'react-router-dom'
import Home from './home'
import Test from './test'
import './app.css';
class App extends React.Component {
constructor(props) {
super(props)
this.state = {primer: '123'}
}
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path='/'>
<Home data={this.state} />
</Route>
<Route path='/test' component={Test} />
</Switch>
</BrowserRouter>
)
}
}
export default App;
И history уже нам не доступно.