我使用browserHistory的listen方法侦听路由更改的react组件。用
注册处理程序后browserHistory.listen(this.handleRouteChanged)
在ComponentDidMount中,如何删除componentWillUnmount中的侦听器?
我找不到任何关于此的文档,并且通过github问题搜索我发现使用browserHistory.unregisterTransitionHook的建议似乎没有删除监听器,此外似乎已被弃用
有什么想法吗?
答案 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()