Получите длину стека действий на 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
ничего не знает о позиции в стеке.