2015-10-20 23 views
3

我已經使用了這一堆,並且沒有足夠的示例或解釋告訴我popToRoute(),反應原生導航器方法是如何工作的。如果有人能幫助我更好地理解它,那將會很棒。當我通過路由對象時,popToRoute()不工作

我通過我的路由對象(這是絕對正確的),但得到的錯誤:「不變的違規:調用popToRoute爲一個不存在的路線!」

下面是相關的代碼,我使用popToRoute()導航方法:

var InviteRoommates = React.createClass({ 
    submitRoommates: function() { 
    this.props.navigator.popToRoute({ 
     index: 3, 
     id: 'ItemList' 
    }); 
    }, 
    render: function() { 
    return (
     <View style={styles.container}> 
     <Text>INVITE ROOMMATES</Text> 
     <TextInput style={styles.input} placeholder="roommate's email address"/> 
     <TouchableHighlight 
      style={styles.button} 
      onPress={() => this.submitRoommates()} 
     > 
      <Text style={styles.btnText}>Submit</Text> 
     </TouchableHighlight> 
     </View> 
    ); 
    } 
}); 
+1

找到了該產品的分辨率?我也遇到了同樣的問題。 – patelsan

回答

3

我寫完全相同的代碼,你,有同樣的問題。找到一個可行的解決方案,雖然很難看。使用this.props.navigator.getCurrentRouts()訪問所有路由對象,然後通過數組中的索引指定一個對象。當然,如果你想通過名字popToRoute你可以簡單地通過循環路線棧和按名稱查詢每條路線這只是如果你知道路由對象在堆棧中的每時每刻位置工程....

this.props.navigator.popToRoute(this.props.navigator.getCurrentRoutes()[1]); 
2

,然後彈出到該路線。

var routes = this.props.navigator.state.routeStack; 
for (var i = routes.length - 1; i >= 0; i--) { 
    if(routes[i].name === "MyDestinationRoute"){ 
    var destinationRoute = this.props.navigator.getCurrentRoutes()[i] 
    this.props.navigator.popToRoute(destinationRoute); 
    } 
} 
0

這對我有效。

const routes = this.props.navigator.getCurrentRoutes(); 
const routeToGo = routes.find(route => route.name == 'the name of the route'); 
this.props.navigator.popToRoute(routeToGo);