Javascript 如何订阅来自react路由器的操作

Javascript 如何订阅来自react路由器的操作,javascript,ajax,reactjs,react-router,react-router-redux,Javascript,Ajax,Reactjs,React Router,React Router Redux,我有React.JS/redux/React路由器/React路由器redux应用程序。我有嵌套菜单来浏览网站。用户单击菜单元素-react router触发操作@@router/LOCATION\u CHANGE(导致URL更改)后,我手动触发操作,导致AJAX请求和页面上的更改(使用fetch()和承诺链发出AJAX请求) 现在我有一个问题——在用户在浏览器中单击“后退”或手动更改URL后,URL更新了,但页面上的数据没有更新。路由器操作已启动,而我的自定义操作未 我可以轻松地将我的还原程序

我有
React.JS
/
redux
/
React路由器
/
React路由器redux
应用程序。我有嵌套菜单来浏览网站。用户单击菜单元素-
react router
触发操作
@@router/LOCATION\u CHANGE
(导致URL更改)后,我手动触发操作,导致AJAX请求和页面上的更改(使用fetch()和承诺链发出AJAX请求)

现在我有一个问题——在用户在浏览器中单击“后退”或手动更改URL后,URL更新了,但页面上的数据没有更新。路由器操作已启动,而我的自定义操作未

我可以轻松地将我的还原程序从自定义操作切换到
@@router/LOCATION\u CHANGE
,但在这种情况下,我不能发出AJAX请求- 我们不能从减速器中发出新的行动


在其他语言中,我会订阅
@@router/LOCATION\u CHANGE
,并在启动路由器操作后启动自定义操作,而不是在单击按钮后。如何在反应中做到这一点?如何订阅由其他组件/中间件触发的操作?

使用withRouter将路由属性传递给您的组件,并从中确定是否需要重新蚀刻数据。另一种选择是在您的商店中放置一个中间件来侦听这些路由操作,但这是一种模糊的方法。组件方法更干净、更透明,您可以使用
?@DayanMorenoLeon New iteration:)中的
历史记录
库。现在,我的导航菜单只包含指向不同页面的链接。我的组件可以访问路由器:
MyCompConnected=withRouter(connect(mapstatetops,mapsdispatchtoprops)(MyComp))
。我的路线:
路径:'stats/(:dataID)
。我的组件检查URL参数并调用回调(从
mapDispatchToProps
)来发出AJAX请求。第一个AJAX调用执行得很好。但在那之后什么也没发生,
react router
的动作不会改变我的视图组件的道具,也不会重新渲染。你知道为什么带路由器的
不将新的
dataID
传递给组件吗?你在哪里打电话?通常在不使用重拨时,人们会选择使用componentWillMount来拨打电话。您确定当路由更改时组件没有重新招标吗?我想是的,但是你的api调用放错了位置。如果您还没有使用,我建议您使用重拨