2017-06-29 30 views
2

我一直在檢查這一段時間,有很多的文件,並在同一時間,什麼都沒有。 我有問題可以從react-navigation中調用重置方法。我有以下StackNavigatorReact-navigation重置說明

const Routes = StackNavigator({ 
    Home: { screen: CheckLogin(App), navigationOptions: { header: null } }, 
    Options: { screen: Options, navigationOptions: { title: 'Settings' } }, 
    Dashboard: { screen: Dashboard }, 
}); 

所以家裏它可以像一個登錄,選項僅僅是一個單頁的一些選項和儀表板是主要的網頁,一旦您被重定向。 問題是,在家中,我正在檢查是否存儲了以前的訪問令牌,因此可以直接轉到儀表板屏幕。我的問題是,它看起來箭頭回來,我不想這樣做,所以一個好的方法可以重置路線。

在我的儀表盤部分,我已經把裏面componentDidMount(不知道在哪裏把它,否則)下面的代碼:

const resetAction = NavigationActions.reset({ 
     index: 1, 
     actions: [ 
      NavigationActions.navigate({ routeName: 'Home' }), 
      NavigationActions.navigate({ routeName: 'Dashboard' }) 
     ] 
    }); 

     this.props.navigation.dispatch(resetAction); 

所以我的理解:這些動作是可以與您的路線去,並且索引是你想要進入動作數組的位置的索引。因此,我的動作陣列中的位置1是儀表板組件。這部分文檔有點令人困惑,所以我不確定。

此代碼不起作用。它會在主頁和儀表板之間的應用程序中創建一個無限循環。

有沒有一種方法,當我到達儀表板組件時,刪除後退箭頭以將其替換爲另一個完全不同的鏈接?如果解決方案是重置。你能否向我解釋這裏有什麼問題,以及它是如何工作的?

我真的很感激任何幫助。

回答

0

我想你想要的是從你的主屏幕上調用該方法,一旦你確定用戶登錄。

const resetAction = NavigationActions.reset({ 
    index: 0, 
    actions: [ 
     NavigationActions.navigate({ routeName: 'Dashboard' }) 
    ] 
}); 

    this.props.navigation.dispatch(resetAction); 

這是什麼NavigationActions.reset()函數做的是執行的操作指定索引(從「指數」鍵)在「動作」鍵和拼接結果狀態指定到導航歷史,擺脫在導航歷史記錄所有後續項目。

你可用路由在提供給您的導航儀,而不是在「動作」鍵這一論點的論據規定。