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应该如何来设置改变按钮input的onclick事件
Dec 10 Javascript
window.onload追加函数使用示例
Mar 03 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
Sep 04 Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
Dec 18 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
React 无状态组件(Stateless Component) 与高阶组件
Aug 14 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
vue3使用vue-count-to组件的实现
Dec 25 Vue.js
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生成局部唯一识别码LUID的代码
2012/10/06 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
PHP文件操作实例总结
2016/09/27 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
js控制浏览器全屏示例代码
2014/02/20 Javascript
javascript中Object使用详解
2015/01/26 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python中字符串变二维数组的实例讲解
2018/04/03 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
医学专业毕业生个人求职信
2013/12/25 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
大一新生期末自我评价
2014/09/12 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
浅谈Python数学建模之线性规划
2021/06/23 Python