React router 4 history.listen永远不会触发

ily*_*lyo 12 browser-history reactjs react-router redux react-router-v4

切换到路由器v4和历史v4.5.1,现在历史监听器无法正常工作

import createBrowserHistory from 'history/createBrowserHistory'
const history = createBrowserHistory()

history.listen((location, action) => {
  console.log(action, location.pathname, location.state)  //  <=== Never happens
})

render(
  <Provider store={store}>
    <Router history={history}>
      ...
    </Router>
  </Provider>,
  document.getElementById('root')
)
Run Code Online (Sandbox Code Playgroud)

有什么想法被忽略的想法?

Tha*_*ara 8

由于您使用的是BrowserRouter(在问题的评论中提到了导入别名路由器),因此它并不关心您传入的历史记录.而是在内部创建并为路由器分配新的浏览器历史记录.因此,您在路由器中侦听和使用的历史实例并不相同.这就是你的听众无法工作的原因.

导入原始路由器.

import { Router } from 'react-router-dom';
Run Code Online (Sandbox Code Playgroud)

它会像你期望的那样工作.