2017-09-14 95 views
0

如何使用反应路由器4有条件地将路由推送到历史记录?我收到错误'history.push不是函数'。history.push in react router 4

我不在寻找重定向,而是在浏览器中的后退按钮也起作用。

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import {BrowserRouter, Switch, Route, Redirect} from 'react-router-dom'; 


import Signup from './components/Signup'; 
import Welcome from './components/Welcome'; 


class App extends React.Component { 

    constructor() { 
     super(); 
     this.state = { 
      isLoggedIn: false 
     }; 
    } 

    render() { 
     return (
      <BrowserRouter> 
       <div> 
        <Route exact path="/signup" component={Signup}/> 
        <Route exact path="/welcome" component={Welcome}/> 
        <Route exact path="/" render={() => (
         this.state.isLoggedIn ? 
          history.push('/welcome') : history.push('/signup') 
        )}/> 
        <Redirect to="/"/> 
       </div> 
      </BrowserRouter> 
     ); 

    } 
} 


ReactDOM.render(<App/>, document.getElementById('root')); 
+0

这可能帮助:https://stackoverflow.com/questions/42474176/ using-conditional-component-with-the-same-route-path-in-reactjs – Dev

+0

我已经看到了。它不影响这个历史,它只是有条件地显示组件。 –

回答

1

重定向组件上有一个选项可以完成您想要的操作。

<Redirect to="/" push /> 

会做导航,也推到浏览器历史记录

history.push总觉得我错了:)

+0

它的工作原理 - 简单而优雅。谢谢。 –