首页 > 解决方案 > 使用 BrowserRouter 对路由更改进行调度操作

问题描述

每次我的应用程序发生路由更改时,我都需要调度 Redux 操作。不幸的是,这些 答案不适用于我的情况,因为我必须使用BrowserRouterinstead Router,并且BrowserRouter不使用history道具。还有另一种方法可以做到这一点吗?我正在使用 V4。

标签: reactjsreduxreact-routerreact-router-v4

解决方案


Dennis 的评论给出了一个可行的解决方案,使用 React 钩子。如下创建一个新组件:

const RouteChange = withRouter(({ location }) => {
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch({ type: "AN_ACTION" });
  }, [dispatch, location.pathname]);

  return null;
});

并将其包含在应用程序的根目录中。每当路由更改时,将调度指定的操作。


推荐阅读