Как отключить swipe back в react native navigator

Я использую react native navigator для связи между двумя экранами входа в систему и посадочного экрана, когда я выхожу из посадочного экрана, даже я могу вернуться к посадочному экрану с экрана входа в систему, так как я могу отключить салфетки обратно в react native navigator

2 ответов


использование immediatelyResetRouteStack () не будет отображать переход. Чтобы нажать новую сцену и запретить прокрутку назад, верните configureScene:

return {
  ...CustomNavigatorSceneConfigs.FloatFromRight,
  gestures: {}
};

моя функция configureScene выглядит так:

configureScene: function(route) {
  if (route.sceneConfig) {
    return route.sceneConfig;
  }
  return {
    ...CustomNavigatorSceneConfigs.FloatFromRight,
    gestures: {}
  };
}

Я предполагаю, что вы сделали что-то вроде этого-

ваш навигатор похож на этот -

<Navigator 
  style={styles.container} 
  initialRoute={{ name: 'signin', index: 0 }} 
  renderScene={ this.renderScene } 
  configureScene={ () => { return Navigator.SceneConfigs.PushFromRight; }}
/>

и когда вы нажимаете на кнопку" Войти" -

this.props.navigator.push({name: 'componentName'});

вместо push() использовать immediatelyResetRouteStack() -

this.props.navigator.immediatelyResetRouteStack([{name: 'componentName'}]);

это сбросит routeStack и предотвратит возврат к экрану входа в систему.

аналогично, когда вы выходите из посадочного экрана, используйте immediatelyResetRouteStack() и запретить пользователю возвращаться к посадочный экран.