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 相关文章推荐
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
js multiple全选与取消全选实现代码
Dec 04 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
javaScript中push函数用法实例分析
Jun 08 Javascript
深入分析jsonp协议原理
Sep 26 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
详解Node.js如何开发命令行工具
Aug 14 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
Dec 27 Javascript
Vue.js对象转换实例
Jun 07 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
JavaScript实现预览本地上传图片功能完整示例
Mar 08 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
PHP-MySQL教程归纳总结
2008/06/07 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
vue实现购物车的监听
2020/04/20 Javascript
Python中Threading用法详解
2017/12/27 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python输出决策树图形的例子
2019/08/09 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
中专生自荐信
2013/10/12 职场文书
大学生如何写自荐信
2014/01/08 职场文书
锦旗标语大全
2014/06/23 职场文书
社区工作者个人总结
2015/02/28 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL