DevSettings.reload() 用于在 React Native 中注销
Posted
技术标签:
【中文标题】DevSettings.reload() 用于在 React Native 中注销【英文标题】:DevSettings.reload() for logout in React Native 【发布时间】:2020-08-07 02:17:27 【问题描述】:问题
我正在将我的混合应用程序的注销功能从原生迁移到反应原生。
要求:
它适用于生产环境和设备 它导航到应用程序的根屏幕(登录屏幕) 它清除了 redux 存储 [很高兴]它取消了任何正在进行的请求最初,我们计划这样做:how-to-reset-the-state-of-a-redux-store
理念
从 React Native 0.62.0 开始,我们现在可以访问 DevSettings 模块。 DevSettings 有一个原生桥,可以reload react-native 环境。但是 DevSettings 真的只适用于开发环境吗?
导出 DevSettings 模块,添加 addMenuItem 方法(cc068b0551 by @janicduplessis)
问题
-
使用重新加载与使用 redux 操作注销的权衡是什么?
我应该在生产应用中使用重新加载吗?
编辑:答案
-
产品不允许重新加载 (code)
react-native-restart 非常适合我的用例。
【问题讨论】:
【参考方案1】:这是不允许在 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();
来自Libraries/Utilities/DevSettings
【讨论】:
【参考方案2】:DevSettings 模块公开了自定义设置的方法 开发人员正在开发中。
DevSettings
仅用于开发环境,在发布模式下不起作用。
最好的解决方案是关注您在问题中分享的link
【讨论】:
啊,是的,我在文档中读到过,但文档非常稀疏。为什么只在开发中?它是否强制它只能用于开发? 这只是一种通过用户交互重新加载应用的新方法,但不可能在发布时重新加载应用 你能详细说明一下吗?代码在哪里说不可能?编辑:发现了一些东西github.com/facebook/react-native/blob/…以上是关于DevSettings.reload() 用于在 React Native 中注销的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 2 个数据集,1 个用于训练,1 个用于在 WEKA 上进行情感分析测试
如何在 AndroidManifest 中指定多个活动,一个用于启动屏幕,一个用于 mainactivity - 将原始意图传递给 mainactivy