使用 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;
});
并将其包含在您的应用程序的根目录中。只要路由发生变化,就会调度指定的动作。
每次我的应用程序发生路由更改时,我都需要分派一个 Redux 操作。不幸的是,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;
});
并将其包含在您的应用程序的根目录中。只要路由发生变化,就会调度指定的动作。