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 相关文章推荐
JavaScript实现自动变换表格边框颜色
May 08 Javascript
java必学必会之static关键字
Dec 03 Javascript
js格式化时间的方法
Dec 18 Javascript
JavaScript实现Fly Bird小游戏
Dec 15 Javascript
使用grunt合并压缩js和css文件的方法
Mar 02 Javascript
javascript 跨域问题以及解决办法
Jul 17 Javascript
vue.js中父组件调用子组件的内部方法示例
Oct 22 Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
javaScript把其它类型转换为Number类型
Oct 13 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 Javascript
JavaScript判断数据类型有几种方法及区别介绍
Sep 02 Javascript
浅析JavaScript 函数柯里化
Sep 08 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 JSON 数据解析代码
2010/05/26 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
php查询内存信息操作示例
2019/05/09 PHP
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
Python字符串处理之count()方法的使用
2015/05/18 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
python3 flask实现文件上传功能
2020/03/20 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang