DevSettings.reload() 用于在 React Native 中注销

DevSettings.reload() for logout in React Native

问题

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

要求:

最初,我们计划这样做:

想法

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

Export the DevSettings module, add addMenuItem method (cc068b0551 by @janicduplessis)

问题

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

编辑:答案

  1. 产品中不允许重新加载 (code)
  2. react-native-restart 非常适合我的用例。

The DevSettings module exposes methods for customizing settings for developers in development.

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

这是不允许在产品中使用 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();

来自 Libraries/Utilities/DevSettings