import {Route, BrowserRouter as Router, HashRouter, BrowserRouter} from "react-router-dom";
let router = new Router();
通过as指定别名可以让router对象获取不同的路由方式。
不过这种方式存在这样的问题:
- 使用HashRouter时,可以new一个新的Router(HashRouter)实例
- 使用BrowserRouter时,不可以新new一个,只能使用渲染的组件中的Router组件实例,否则history push的不是同一个栈
使用ref获取组件实例
// 通过ref
ReactDOM.render((
<Provider store={store}>
<Router ref={ref => router = ref}>
<Route path="/react/robot/a" component={Test1} />
<Route path="/react/robot/b" component={Test2} />
</Router>
</Provider>
), node);
这样就可以直接利用router对象在react组件外进行路由了:
router.history.push(path);