ReactNative 物理返回键失效的问题
最近遇到个需求,在Modal里面,点击游戏列表,用户马上点击android回退键取消进入游戏。这个并不是很难实现,添加个监听事件就好了了百度一下就可以得到这样的结论:import { BackHandler } from 'react-native';//页面获取焦点的时候,监听回退键BackHandler.addEventListener('hardwareBackPres...
最近遇到个需求,在Modal里面,点击游戏列表,用户马上点击android回退键取消进入游戏。
这个并不是很难实现,添加个监听事件就好了了
百度一下就可以得到这样的结论:
import { BackHandler } from 'react-native';
//页面获取焦点的时候,监听回退键
BackHandler.addEventListener('hardwareBackPress', this.backHand);
//页面销毁时候,取消回退键
BackHandler.removeEventListener('hardwareBackPress', this.backHand);
在页面上的确可以执行,
可是Modal里面写这段代码就不行了,
百度?是不可能百度得到这个问题,也许这个笔记后,你可以百度的到。。。。
谷歌了下,很多人都说在Modal里面无效,所以我尝试下再也没组件里面监听,通过store来识别用户是否摁下了回退键。
机智如我~_~''
然而,并不行。。。
当modal覆盖在页面组件上面的时候,页面组件里面的回调不会执行。。
头大,当时就懵逼了,wtf?
最后去github官方仓库看下,的确有这个坑:
https://github.com/facebook/react-native/issues/19147
万能的群友当晚也没有给我任何回复,凌晨1点了。。。。都抱媳妇去了吧。。
第二天,果然得到了我想要的思路。。。。
Modal不是也有安卓回退键监听么,就在这里判断下:
1.如果进入游戏中的弹窗出来了,就在Modal的回调函数里面修改store,然后关闭“进入游戏中“的弹窗,但是不关闭Modal
2.否则,关闭Modal
解决!
不过这样就就会出现了重复代码,因为我有多个modal就得写多个这样的代码。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~后续待更新。。。~~~~~~~~~~~~~~~~~~~~~~~~~
更多推荐


所有评论(0)