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 相关文章推荐
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
Apr 15 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
Feb 23 Javascript
jQuery extend 的简单实例
Sep 18 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
javascript history对象详解
Feb 09 Javascript
js时间查询插件使用详解
Apr 07 Javascript
使用JS实现导航切换时高亮显示的示例讲解
Aug 22 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 Javascript
vue element动态渲染、移除表单并添加验证的实现
Jan 16 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
如何检查一个对象是否为空
Apr 11 Javascript
js 计数排序的实现示例(升级版)
Jan 12 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
php无限极分类实现的两种解决方法
2013/04/28 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
PHP自定义多进制的方法
2016/11/03 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
javascript date格式化示例
2013/09/25 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
python中requests模块的使用方法
2015/04/08 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
社区敬老月活动实施方案
2014/02/17 职场文书
初三学习决心书
2014/03/11 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
员工年终自我评价
2014/09/14 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书