在react-native-router-flux上获取Action堆栈长度

时间:2017-01-25 08:47:47

标签: react-native react-native-android react-native-router-flux

我遇到了一个问题,在我决定之前我需要BackAndroid Press上的堆栈长度,我是否想要弹出场景。有没有办法获得堆栈长度?

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

基本上在exitPressed上,我想检查堆栈长度是否为1,如果是,我想将其重定向到另一个场景,任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分:0)

假设您使用Navigatorindex.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对堆栈上的位置一无所知。