使用 BrowserRouter 对路由更改进行调度操作

Dispatch action on route change with BrowserRouter

每次我的应用程序发生路由更改时,我都需要分派一个 Redux 操作。不幸的是, answers 不适用于我的情况,因为我必须使用 BrowserRouter 而不是 Router,并且 BrowserRouter 不采用 history 道具。还有另一种方法吗?我正在使用 V4.

你可以在你的每个反应中使用 componentwillunmount class 它会工作得很好

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

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

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

  return null;
});

并将其包含在您的应用程序的根目录中。只要路由发生变化,就会调度指定的动作。