React-Native中禁用Navigator手势返回的示例代码


Posted in Javascript onSeptember 09, 2017

在React-Native开发中,经常会用到导航。导航做什么用的呢,简单点说就是页面跳转。

个项目中,肯定有很多的页面要跳来跳去的,RN就给我们提供了Navigator组件,可以很好的管理页面的跳转。

在所有工作做完之后,发现有个bug!在从第一个界面跳转到下一个界面后,如果从屏幕左边向右滑,或者从上面想下滑,你会发现一个神奇的事情,那就是页面会通过滑动而返回到上一个界面。这让我们很尴尬了,本来打算禁止跳转返回的,或者返回时还要做些什么处理的,结果啥都没做,直接返回,可以说,这个功能有点适得其反了。

于是为了解决这个问题,到处找答案,官网没有说,论坛也没人回答。于是放置了很久很久,没想到在今天的而然查找下,终于找到解决方案了。

方案主要分三种:

1,自己定义个configureScene:

const NoBackSwipe = { 
 ...Navigator.SceneConfigs.HorizontalSwipeJump, 
  gestures: { 
   pop: {} 
  } 
};

然后在Navigator标签下使用

<Navigator  
   initialRoute={{Component:'xxx', name:'xxx', index:0, configure: NoBackSwipe}} 
   renderScene={this.renderScene.bind(this)} 
   configureScene={(route,routeStack)=>{ 
    return NoBackSwipe 
   }} 
  />

这里主要是处理了pop,其中还有jumpback,jumpforward的

2,如果你都不要返回处理的,直接将gestures都改成{}或者null

configureScene(route, routeStack){ 
 let configure = Navigator.SceneConfigs.PushFromRight; 
 switch(route.configure){ 
  case Consts.FloatFromLeft: 
   configure = Navigator.SceneConfigs.FloatFromLeft; 
   break; 
  case Consts.FloatFromBottom: 
   configure = Navigator.SceneConfigs.FloatFromBottom; 
   break; 
 } 
 return { 
  ...configure, 
  gestures:{}//或者改成null 
 }; 
}

然后使用也是一样: 

<Navigator initialRoute={{Component:'xxx', name:'xxx', index:0, configure: NoBackSwipe}} 
    configureScene={this.configureScene.bind(this)} 
    renderScene={this.renderScene.bind(this)} 
    onStartShouldSetResponder={()=>false}/>

我就是用的第二种。

3,还有一种,是直接改源码,在项目目录下找到路径:

/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js

里面有一段代码,去掉pop就可以了

var GESTURE_ACTIONS = [ 
 'pop',//把这个去掉就可以了 
 'jumpBack', 
 'jumpForward', 
];

这种直接修改源码的不推荐使用,因为每当你要升级RN或者做其他调整时,重新下载下来又得改,还是上面两种比较靠谱。

以上就是今天的大发现,终于解决滑动返回的问题了~

资料参考:How to disable back swipe gesture in react native navigator

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
利用jQuery 实现GridView异步排序、分页的代码
Feb 06 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
May 28 Javascript
jquery+json实现数据列表分页示例代码
Nov 15 Javascript
浅谈JavaScript数据类型
Mar 03 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 Javascript
遍历js中对象的属性和值的实例
Nov 21 Javascript
vue 中引用gojs绘制E-R图的方法示例
Aug 24 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
微信小程序自定义可滑动日历界面
Dec 28 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 Javascript
js实现音乐播放控制条
Sep 09 #Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
Sep 08 #Javascript
详解vue2 $watch要注意的问题
Sep 08 #Javascript
Express + Session 实现登录验证功能
Sep 08 #Javascript
Vue中组件之间数据的传递的示例代码
Sep 08 #Javascript
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 #jQuery
JavaScript实现开关等效果
Sep 08 #Javascript
You might like
php allow_url_include的应用和解释
2010/04/22 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
关键字final的用法
2013/10/02 面试题
出国导师推荐信
2014/01/16 职场文书
租房协议书
2014/04/10 职场文书
留学顾问岗位职责
2014/04/14 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
单位单身证明样本
2014/10/11 职场文书
泰山导游词
2015/02/02 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python