2017-03-02 144 views
0

我想確保用戶總是會被髮送到登錄頁面,如果他們當前沒有登錄。我正在使用Redux來存儲當前用戶ID,所以這不是問題。主要的問題是,無論我將哪些檢查放在路由器文件中,該應用程序在我導航到它們時都會顯示所有頁面。任何幫助將不勝感激。使用React本地路由器Flux/Redux保護路由(場景)

<Router sceneStyle={{ paddingTop: 65 }}> 
    <Scene 
    key="splash" 
    component={Splash} 
    title="App" 
    timeout={500} 
    nextScene={'main'} 
    initial 
    /> 

    <Scene key="auth" > 
    <Scene key="login" component={LoginForm} title="Please Login" /> 
    </Scene> 

    <Scene key="profile"> 
    <Scene key="profilePage" component={ProfilePage} title="My Profile" /> 
    </Scene> 

    <Scene key="main" > 
    <Scene 
     key="subscribedList" 
     component={SubscribedList} 
     title="Choose A List" 
    /> 
    <Scene 
     key="itemsList" 
     component={ItemsList} 
     onBack={() => Actions.subscribedList()} 
    /> 
    <Scene 
     key="createList" 
     component={CreateList} 
     title="Create A List" 
    /> 
    <Scene 
     key="createItem" 
     component={CreateItem} 
     title="Create Item" 
    /> 
    <Scene 
     key="compareItem" 
     component={CompareItem} 
     title="Found Item" 
    /> 
    </Scene> 
</Router> 

回答

0

我使用交換機作爲路由器磁通文檔:
https://github.com/aksonov/react-native-router-flux/blob/master/docs/OTHER_INFO.md

handlePressPurchases =() => { 
    Actions.account({section: 'purchases'}) 
    } 



    import { connect } from 'react-redux' 

    <Scene 
      key="account" 
      component={connect(state=>({isAuth: state.login.username != null }))(Switch)} 
      tabs={true} 
      unmountScenes 
      selector={props=> !props.isAuth ? "login_account" : props.section } 
     > 
      <Scene key="login_account" component={LoginScreen} title="Login"/> 
      <Scene key='purchases' component={Purchases} title='Purchases' navBar={AppNavBar} /> 
      <Scene key='balance' component={Balance} title='Balance' navBar={AppNavBar} /> 
    </Scene> 

第二替代是使用Actions.login()基於authState每個場景分量重定向。