react-router - 有没有办法在 HashRouter 和 react-router v4 中使用历史记录?

标签 react-router react-router-dom react-router-v4

我需要将用户重定向到 React 组件之外,这通常是使用 history 完成的。与 react 路由器。

// history.js
const history = createBrowserHistory();
export default history;

// App, setting up router
import { HashRouter as Router } from 'react-router-dom';
import history from './history';
...
<HashRouter history={history}>...</HashRouter> // problem

// Non-component file
import history from './history';
history.push('/target');
HashRouter不接受历史 Prop ,而是在内部处理历史,并指示开发人员使用 withRouter为了曝光history对于组件,如何在组件外部进行重定向并不明显。
我正在使用 HashRouter我需要使用 history在组件之外(意味着我不能使用 withRouter )。
我怎么能做到这一点?

最佳答案

是的,有一种方法可以使用 history和一个基于哈希的路由器在一起。
创建历史实例时,使用 createHashHistory而不是 createBrowserHistory .

// myCreatedHistory.js
import { createHashHistory } from 'history';
export default createHashHistory();
而不是使用 HashRouter ,使用低级 Router相反,并通过 history Prop 给它,像这样。
// App
import { Router } from 'react-router-dom';
import history from '../myCreatedHistory';
...
<Router basename="/" history={history}>...</Router>
然后你可以导入history从任何地方(比如中间件)。
// Middleware, or anywhere
import history from '../myCreatedHistory';
history.push('/target');

关于react-router - 有没有办法在 HashRouter 和 react-router v4 中使用历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63612097/

相关文章:

javascript - 我如何拦截组件以检查权限

seo - 将 prerender.io 与 ReactJS 一起用于 SEO

reactjs - React - 获取包装类组件的引用

reactjs - 当组件使用react-router-dom渲染时更改Url?

node.js - ReactJS中URL不匹配时如何返回404状态代码

javascript - 我怎样才能把它写成一个类组件

javascript - 如何使用路由发送值-reactjs

javascript - 子菜单不适用于 ReactJs 中的多个项目?

javascript - React Router 4相对路径

javascript - React 路由组件处理所有 "/"路由,除了 "/login"