0

我遇到了一個問題,在BackAndroid需要堆棧長度之前在我決定之前按下,是否要彈出場景。有沒有辦法獲得堆棧長度?在react-native-router-flux上獲取動作堆棧長度

BackAndroid.addEventListener('hardwareBackPress', this.exitPress.bind(this));

基本上在exitPressed,我想檢查堆棧長度爲1,如果是,我想它重定向到另一個場景,任何幫助表示讚賞。

回答

0

假設你正在使用您的Navigator文件index.android.js應該是這樣的:

export default class Foo extends React.Component { 

    constructor(props) { 
     super(props); 
     this._navigator = null; 
    } 

    renderScene(route, navigator) { 
     if(!this._navigator){ 
      this._navigator = navigator; 
      BackAndroid.addEventListener('hardwareBackPress',() => { 
       if (this._navigator && this._navigator.getCurrentRoutes().length > 1) { 
        this._navigator.pop(); 
        return true; 
       } 

       return true; 
      }); 
     } 

     return React.createElement(component, { ...this.props, ...route.passProps, route, navigator }); 
    } 

    render() { 
     return (
      <Navigator 
       initialRoute={...} 
       configureScene={...} 
       renderScene={(route, nav) => {return this.renderScene(route, nav)}} 
      /> 
     ); 
    } 
} 

AppRegistry.registerComponent('Foo',() => Foo); 

如果你不使用Navigator IDK如何才能做到這一點,因爲hardwareBackPress不知道堆棧上的任何位置。