2016-06-10 78 views
2

例如,当我这样做,回调得到,只要我打电话叫.listen()如何防止React Router的`browserHistory.listen`立即调用回调?

let unlistener = ReactRouter.browserHistory.listen(route => { 
    // do something when the path changes 
}); 

如何防止这种情况的发生?或者,如何获取当前路线的路线,以便将路线参数与当前路线进行比较?

我不想让这个函数忽略第一次执行,因为这太hacky。可能有些时候函数没有立即调用。

+0

您是说,回调总是立即调用,并响应路由更改?我觉得很难相信。如果是这样,这是一个错误。 –

+0

我有同样的问题,但无法找到解决方案,并最终去“忽略第一次执行”黑客路线(哈哈得到它?我需要更多的朋友)。无论如何,真的很感兴趣,看看是否有一个优雅的解决方案。 –

回答

1

如果您使用redux,您可以使用react-router-reduxhttps://github.com/reactjs/react-router-redux)。当您设置它时,每次更改历史记录时,都会调度LOCATION_CHANGE动作。

添加减速器以处理LOCATION_CHANGE的主要优点是您可以在动作的有效负载中获得新路径,并且您可以在商店的state中参考当前路线。

+0

请注意这是'@@ router/LOCATION_CHANGE' –