2017-09-14 10 views
0

반응 라우터 4를 사용하여 조건부로 경로를 내 보냈습니까? 'history.push가 함수가 아닙니다.'오류가 발생합니다.반응 라우터 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/ 조건부 구성 요소를 사용하는 동일한 조건의 경로를 사용하는 반응 경로 – Dev

+0

나는 그것을 보았다. 이 역사에 영향을 미치지 않습니다. 조건부로 구성 요소를 표시합니다. –

답변

1

리디렉션 구성 요소에는 원하는대로 정확하게 수행 할 수있는 옵션이 있습니다.

<Redirect to="/" push /> 

탐색을하고, 또한

history.push 항상

+0

간단하고 우아합니다. 감사. –