DevSettings.reload() 用于在 React Native 中注销
DevSettings.reload() for logout in React Native
问题
我正在将我的混合应用程序的注销功能从本机迁移到 React 本机。
要求:
- 它可以在生产和设备上运行
- 它导航到应用程序的根屏幕(登录屏幕)
- 清除 redux 存储
- [很高兴]它取消任何飞行中的请求
最初,我们计划这样做:
想法
从 React Native 0.62.0 开始,我们现在可以访问 DevSettings 模块。 DevSettings 有一个本地桥,可以 reload react-native 环境。但是 DevSettings 真的只适用于开发环境吗?
Export the DevSettings module, add addMenuItem method (cc068b0551 by
@janicduplessis)
问题
- 使用重新加载与使用 redux 操作注销的权衡是什么?
- 我应该在生产应用程序中使用重新加载吗?
编辑:答案
- 产品中不允许重新加载 (code)
- 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();
问题
我正在将我的混合应用程序的注销功能从本机迁移到 React 本机。
要求:
- 它可以在生产和设备上运行
- 它导航到应用程序的根屏幕(登录屏幕)
- 清除 redux 存储
- [很高兴]它取消任何飞行中的请求
最初,我们计划这样做:
想法
从 React Native 0.62.0 开始,我们现在可以访问 DevSettings 模块。 DevSettings 有一个本地桥,可以 reload react-native 环境。但是 DevSettings 真的只适用于开发环境吗?
Export the DevSettings module, add addMenuItem method (cc068b0551 by @janicduplessis)
问题
- 使用重新加载与使用 redux 操作注销的权衡是什么?
- 我应该在生产应用程序中使用重新加载吗?
编辑:答案
- 产品中不允许重新加载 (code)
- 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();