在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将其使用到我的商店中的组件。还有其他选择吗?