删除react-router browserHistory更改侦听器

时间:2016-06-20 11:27:49

标签: reactjs react-router

我使用browserHistory的listen方法侦听路由更改的react组件。用

注册处理程序后
browserHistory.listen(this.handleRouteChanged)

在ComponentDidMount中,如何删除componentWillUnmount中的侦听器?

我找不到任何关于此的文档,并且通过github问题搜索我发现使用browserHistory.unregisterTransitionHook的建议似乎没有删除监听器,此外似乎已被弃用

有什么想法吗?

1 个答案:

答案 0 :(得分:10)

listen()方法返回一个阻止其收听的函数。这在history docs

中有记录
  

“历史记录”封装了应用中不同屏幕之间的导航,并在当前屏幕更改时通知听众。

import { createHistory } from 'history'

const history = createHistory()

// Get the current location 
const location = history.getCurrentLocation()

// Listen for changes to the current location 
const unlisten = history.listen(location => {
  console.log(location.pathname)
})

// Push a new entry onto the history stack 
history.push({
  pathname: '/the/path',
  search: '?a=query',

  // Extra location-specific state may be kept in session 
  // storage instead of in the URL query string! 
  state: { the: 'state' }
})

// When you're finished, stop the listener 
unlisten()