4

问题

我正在将我的混合应用程序的注销功能从本机迁移到本机反应。

要求:

  • 它适用于生产和设备
  • 它导航到应用程序的根屏幕(登录屏幕)
  • 它清除了 redux 存储
  • [很高兴]它取消任何飞行中的请求

最初,我们计划做这样的事情:how-to-reset-the-state-of-a-redux-store

理念

从 React Native 0.62.0 开始,我们现在可以访问 DevSettings 模块。DevSettings 有一个原生桥,可以重新加载react-native 环境。但是 DevSettings 真的只适用于开发环境吗?

导出 DevSettings 模块,添加 addMenuItem 方法(cc068b0551 by @janicduplessis)

问题

  1. 使用 reload 与使用 redux 操作注销的权衡是什么?
  2. 我应该在生产应用程序中使用重新加载吗?

编辑:答案

  1. prod(代码)中不允许重新加载
  2. react-native-restart非常适合我的用例。
4

2 回答 2

2

这是不允许在 prod 中使用 devSettings 的代码行

import NativeDevSettings from '../NativeModules/specs/NativeDevSettings';
import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';

class DevSettings extends NativeEventEmitter {
  ...
  reload(reason: string) {
    if (typeof NativeDevSettings.reloadWithReason === 'function') {
      NativeDevSettings.reloadWithReason(reason || 'Uncategorized from JS');
    } else {
      NativeDevSettings.reload();
    }
  }
  ...
}

// Avoid including the full `NativeDevSettings` class in prod.
class NoopDevSettings {
  addMenuItem(title: string, handler: () => mixed) {}
  reload() {}
}

module.exports = __DEV__ ? new DevSettings() : new NoopDevSettings();

库/实用程序/DevSettings

于 2020-04-23T20:30:16.980 回答
0

DevSettings 模块公开了为开发人员自定义设置的方法

仅适用于DevSettings开发环境,它不会在发布模式下工作。最好的解决方案是按照您在问题中共享的链接

于 2020-04-23T17:04:57.713 回答