React Router:onMount / willMount从路由器组件重定向(使用BrowserRouter和BrowserHistory)

时间:2017-10-31 18:52:20

标签: javascript reactjs react-router-dom

我正在努力从浏览器路由器组件重定向/推送历史记录。以下是我的应用程序的细分示例。

我在路由器组件旁边有状态对象(带有用户登录数据),为简单起见,在下面的示例中,这是一个简单的重定向状态。

如果用户已登录,我想重定向,但我得到了

  

错误未捕获的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;

0 个答案:

没有答案