Получите длину стека действий на Reaction-native-router-flux

Я застрял с проблемой, где мне нужна длина стека на BackAndroid Нажмите, прежде чем я решу, хочу ли я выскочить сцены или нет. Есть ли способ получить длину стека?

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

В основном на exitPressed я хочу проверить, равна ли длина стека 1, если это так, я хочу перенаправить его в другую сцену, любая помощь приветствуется.

1 ответ

Предполагая, что вы используете 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 ИДК, как вы можете сделать это, потому что hardwareBackPress ничего не знает о позиции в стеке.

Другие вопросы по тегам