如何使用React路由器6在React组件之外导航 [英] How to navigate outside of react component using react router 6

查看:14
本文介绍了如何使用React路由器6在React组件之外导航的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在我有一个历史记录模块,它允许我在Reaction组件之外使用历史记录:

import { createBrowserHistory } from 'history';

export default createBrowserHistory();

然后我直接在App.jsx中使用此历史记录

import { Router } from 'react-router-dom';
...
<Router history={history}>...</Router>

我可以在任何地方导入和使用相同的历史对象。即使在任何Reaction组件之外的自定义帮助器中也是如此。

这在Reaction路由器6中如何工作

因为历史记录被替换为导航,所以我还没有看到任何在线解决方案。

我知道它仍然是测试版,但我想提前检查一下。

谢谢您的点子!

推荐答案

我最终得到了以下解决方案:

首先,反应路由器DOM 6具有导航功能,而不是历史功能。最好使用导航来导航航道:

我创建并修复了我的History对象,这样它就可以继续使用‘Push’,而且我不需要大量的修改:

const History = {
  navigate: null,
  push: (page, ...rest) => History.navigate(page, ...rest),
};

export default History;

然后我制作了自己的组件来设置导航:

import { useNavigate } from 'react-router-dom';

const NavigateSetter = () => {
  History.navigate = useNavigate();

  return null;
};

然后在定义默认路由器时,我将setter放在子路由器中:

import { BrowserRouter } from 'react-router-dom';

<BrowserRouter>
    <NavigateSetter />
    <App />
</BrowserRouter>

之后,您可以使用Everywhere历史记录。推或历史记录。使用默认的REACTION-RUTER-DOM的导航API导航。

这篇关于如何使用React路由器6在React组件之外导航的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆