【问题标题】:How can i disable swipe back in react native navigator如何在反应本机导航器中禁用回扫
【发布时间】:2016-03-15 09:32:34
【问题描述】:

我正在使用 react native navigator 在两个屏幕登录和登录屏幕之间进行通信,当我从登录屏幕注销时,即使我可以从登录屏幕滑回登录屏幕,所以我如何在 react native 中禁用滑回导航器

【问题讨论】:

    标签: javascript android react-native


    【解决方案1】:

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

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

    我的 configureScene 函数如下所示:

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

    【讨论】:

    • 我从这里得到了完全定义的答案link
    • 太棒了。但是如果我想在某些场景中启用滑动并在另一个场景中禁用呢?
    【解决方案2】:

    我假设你做过这样的事情-

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

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

    当你点击“登录”按钮时-

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

    immediatelyResetRouteStack()代替push() -

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

    这将重置 routeStack 并防止返回登录屏幕。

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

    【讨论】:

    • 这对我不起作用;我有更好的运气使用 this.props.navigator.replace({name: 'componentName'});并从那里使用新路线导航。现在,如果我可以保留过渡动画...叹息
    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多