问题
我正在将混合应用程序的注销功能从本机迁移到反应本机。
要求:
- 它可以在生产环境和设备上运行
- 它导航到应用程序的根屏幕(登录屏幕)
- 它清除 redux 存储
- [很高兴有]它会取消任何飞行中的请求
最初,我们计划做这样的事情:如何重置 redux 存储的状态 https://stackoverflow.com/a/35641992/2423416
The Idea
从 React Native 0.62.0 开始,我们现在可以访问 DevSettings 模块。 DevSettings 有一个本机桥,可以reload https://reactnative.dev/docs/devsettings#reload反应本机环境。但 DevSettings 真的只适用于开发环境吗?
导出DevSettings模块,添加addMenuItem方法(cc068b0551 by
@janicduplessis)
问题
- 使用重新加载与使用 redux 操作注销有何权衡?
- 我应该在生产应用程序中使用重新加载吗?
编辑:答案
- 产品中不允许重新加载(code https://github.com/facebook/react-native/blob/0b9ea60b4fee8cacc36e7160e31b91fc114dbc0d/Libraries/Utilities/DevSettings.js#L59-L65)
-
反应本机重启 https://www.npmjs.com/package/react-native-restart非常适合我的用例。
这是不允许在 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();
from 库/实用程序/DevSettings https://github.com/facebook/react-native/blob/0b9ea60b4fee8cacc36e7160e31b91fc114dbc0d/Libraries/Utilities/DevSettings.js#L59-L65
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)