如何在反应原生导航器中禁用滑动

Anw*_*ain 8 javascript android react-native

navigator当我从登陆屏幕注销时,我正在使用本机进行两个屏幕登录和登陆屏幕之间的通信,即使我可以从登录屏幕刷回到登陆屏幕,所以如何禁用刷卡反应本机导航器

Dav*_*vid 11

使用immediatelyResetRouteStack()不会显示任何转换.要推送新场景并禁止向后滑动,请让configureScene返回:

return {
  ...CustomNavigatorSceneConfigs.FloatFromRight,
  gestures: {}
};
Run Code Online (Sandbox Code Playgroud)

我的configureScene函数如下所示:

configureScene: function(route) {
  if (route.sceneConfig) {
    return route.sceneConfig;
  }
  return {
    ...CustomNavigatorSceneConfigs.FloatFromRight,
    gestures: {}
  };
}
Run Code Online (Sandbox Code Playgroud)

  • 真棒.但是,如果,我想在某些场景中启用滑动并在另一个场景中禁用? (2认同)

Mih*_*hir 9

我假设你做过这样的事 -

您的导航器看起来与此类似 -

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

当您点击"登录"按钮时 -

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

而不是push()使用immediatelyResetRouteStack()-

this.props.navigator.immediatelyResetRouteStack([{name: 'componentName'}]);
Run Code Online (Sandbox Code Playgroud)

这将重置routeStack并阻止返回登录屏幕.

同样,当您退出登陆屏幕时,请使用immediatelyResetRouteStack()并阻止用户返回登陆屏幕.