我正在努力从浏览器路由器组件重定向/推送历史记录。以下是我的应用程序的细分示例。
我在路由器组件旁边有状态对象(带有用户登录数据),为简单起见,在下面的示例中,这是一个简单的重定向状态。
如果用户已登录,我想重定向,但我得到了
错误未捕获的TypeError:无法读取属性'历史记录'的 未定义且无法查看如何从此上下文访问历史记录。
内部组件我可以毫无问题地使用this.context.router.history.push('/Welcome');
,但这在路由器组件中也不起作用。
import React from 'react';
import Header from './Header';
import Welcome from './Welcome';
import LoggedOut from './LoggedOut';
import { BrowserRouter, Route, Switch, Link, BrowserHistory } from 'react-router-dom'
class Router extends React.Component{
constructor(){
super();
this.state = {
redirect: true,
};
}
componentWillMount(){
if(this.state.redirect){
this.BrowserHistory.history.push('/logged-out'); // ⬅️ **This**
}
}
render (){
return(
<BrowserRouter history={BrowserHistory}>
<div>
<Header/>
<Switch>
<Route exact path="/" component={()=><Welcome />}/>
<Route path="/logged-out" component={()=><LoggedOut />}/>
</Switch>
</div>
</BrowserRouter>
)
}
}
Router.propTypes = {
appMode:React.PropTypes.string.isRequired
}
export default Router;