mip*_*phe 4 react-router react-router-v4 react-router-dom
我需要将用户重定向到 React 组件之外,这通常是使用 history
react-router 完成的。
// 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');
Run Code Online (Sandbox Code Playgroud)
由于HashRouter
不接受历史道具,而是在内部处理历史,并指示开发人员使用withRouter
以暴露history
给组件,因此如何在组件外部进行重定向并不明显。
我正在使用HashRouter
,我需要使用history
组件外部(意味着我不能使用withRouter
)。
我怎么能做到这一点?
mip*_*phe 10
是的,有一种方法可以history
和基于哈希的路由器一起使用。
创建历史实例时,使用createHashHistory
代替createBrowserHistory
。
// myCreatedHistory.js
import { createHashHistory } from 'history';
export default createHashHistory();
Run Code Online (Sandbox Code Playgroud)
不要使用HashRouter
,而是使用低级Router
,并将history
道具传递给它,就像这样。
// App
import { Router } from 'react-router-dom';
import history from '../myCreatedHistory';
...
<Router basename="/" history={history}>...</Router>
Run Code Online (Sandbox Code Playgroud)
然后你可以history
从任何地方导入(比如中间件)。
// Middleware, or anywhere
import history from '../myCreatedHistory';
history.push('/target');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2790 次 |
最近记录: |