小编kof*_*gna的帖子

React Router v6 在组件之外导航

在react-router v5中我创建了这样的历史对象:

import { createBrowserHistory } from "history";
export const history = createBrowserHistory();
Run Code Online (Sandbox Code Playgroud)

然后将其传递给路由器:

import { Router, Switch, Route, Link } from "react-router-dom";
<Router history={history}>
 ... my routes
</Router>
Run Code Online (Sandbox Code Playgroud)

我这样做是为了有机会在组件之外使用历史记录:

   // store action
    logout() {
        this.user = null;
        history.push('/');
    }
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我将逻辑移至商店,并且组件尽可能保持干净。但现在,在 React Router v6 中我不能做同样的事情。我仍然可以useNavigate()在我的组件内部使用它进行导航,但我无法创建一个navigate将其使用到我的商店中的组件。还有其他选择吗?

javascript reactjs react-router react-router-dom

54
推荐指数
3
解决办法
6万
查看次数