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来说,都是泪。

你可能感兴趣的:(android,React,Native)