BackHandler 在非远程调试条件下不能用

BackHandler 在非远程调试条件下不能用

问题描述:
react-native version: 0.54.4
返回键监听BackHandler.addEventListener 在远程调试条件下执行,在非远程调试下,不执行。
原因及hack方法,就在这个页面中。

  • 为何远程调试正常,离线包不正常?
    在这个页面有讨论:https://github.com/facebook/react-native/issues/4676
    大致意思是,远程调试,js运行在浏览器,相关语法是支持的,离线包是运行在本机的(当前出错在Android,iOS没问题)

  • 那一条语句导致了问题?
    //问题处在BackHandler.android.js 里

// 主要是Array.from(...) 这个语法的问题
var subscriptions = Array.from(_backPressSubscriptions.values()).reverse();
  • 有什么方法?
    官方github的issue:
    https://github.com/facebook/react-native/issues/15497
    下面三行是我的hack方法

    var subscriptions = []
    _backPressSubscriptions.forEach(item=>subscriptions.push(item))
    subscriptions.reverse();
  • Array.from 在当前rn版本中还不支持?这是bug?还是feature?
    不好说,可能是feature,毕竟iOS已经支持了。对Android来说,都是泪。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值