2016-09-27 8 views
0

나는 어떤 부분의 상태에 따라 다른 경로를 사용하려면, 그래서 나는 다음과 같은 내놓았다 :동적 반작용-라우터 경로

을 내 입력 파일 :

import routes from './routes.js' 

ReactDOM.render(
    <IntlProvider locale={locale} messages={messages[locale]}> 
    <Provider store={store} key='provider'> 
     <div> 
     <Router history={history} routes={routes(store)} /> 
     </div> 
    </Provider> 
    </IntlProvider>, 
    document.getElementById('root') 
) 

경로를. JS :

export default (store) => (
    let isAuthenticated = store.getState().auth.isAuthenticated 

    if(isAuthenticated) { 
    return (
     <Route component={Tool}> 
     <IndexRoute component={Dashboard} /> 
     <Route path="products" component={Products} /> 
     </Route> 
    ) 
    } else { 
    return (
     <Route> 
     <Route component={Site}> 
      <IndexRoute component={Home} /> 
      <Route path="pricing" component={Pricing} /> 
     </Route> 
     <Route component={Portal}> 
      <Route path="login" component={Login} /> 
      <Route path="register" component={Register} /> 
     </Route> 
     </Route> 
    ) 
    } 
) 

이 실제로 refre 경우에만 있지만, 작동 sh 페이지. 홈 구성 요소에서 Dashboard 구성 요소로 전환하지 않습니다. 브라우저 페이지를 새로 고치지 않고 로그인하면 라우트 개체가 처음에는 한 번만 빌드되고 현재 상태는 빌드되지만 변경되지는 않습니다. 상태가 중간 실행을 변경합니다.

또한 동적 경로와 관련하여 https://github.com/ReactTraining/react-router/blob/master/docs/guides/DynamicRouting.md이 발견되었지만 시도한 것처럼 그렇게하기를 기대하지 않았거나 예상하지 못했습니다.

+0

이 라우터에 내장 된이 기능이 반작용 예를 들어 인증 흐름을 사용하여 뒤에 의도를 설명하기 위해 참조하십시오 참조 : HTTPS :을 //github.com/ReactTraining/react-router/tree/master/examples/auth-flow –

+0

@ DanWinter-Wijntjes이 예제가 어떻게 구현되는지는 알 수 없습니다. 그것은 인증 흐름에 관한 것이 아니라 동적 라우팅에 관한 것이고, 예제의 경로는 나에게 꽤 정적 인 것처럼 보입니다. –

답변

-1

는 사용자에 승인 예컨대 확인하는 기능을 갖는 경로 레벨

<Route name="example" path="/example" component={Example} onEnter={functionToCheckAuthorization()} /> 

onEnter 방법을 사용하여

function functionToCheckAuthorization(nextState, replace) { 
    if (!auth.loggedIn()) { 
    replace({ 
     pathname: '/login', 
     state: { nextPathname: nextState.location.pathname } 
    }) 
    } 
} 

참조 참조하십시오 https://github.com/ReactTraining/react-router/blob/master/examples/auth-flow/app.js

은 또한 참조를 참조하십시오. https://github.com/ReactTraining/react-router/issues/243

+0

위의 질문에 이미 언급 한 내용이 내가 원하는 바가 아니란 이유는 무엇입니까? 그것은 단지 내 경우에는 국가의 인증 부분 일이지만, 실제로는 단지 예일뿐입니다. 나는 상태의 임의의 값을 기반으로 다른 라우팅 모델을 원한다. –

+0

그래서 명확히하기 위해 ... 어떤 값을 기반으로 다른 경로 집합을 제공하고 싶습니까? 이 경우 위의 방법과 약간의 조정을 통해이 작업을 수행 할 수 있습니다. auth.loggedIn()은 점검해야하는 값으로 대체 될 수 있습니다. 대응 라우터는 그 위에 상태가 변경되도록 설계되지 않았으므로 경로 가시성을 결정해야합니다. React 라우터 및 동적 라우팅의 일반적인 관행은 "모든 경로를 먼저 선언 한 다음 방문자가 인증 흐름과 같은 방문자를 방문하는지 확인하는 것입니다." –