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

2024-05-10

问题

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

要求:

  • 它可以在生产环境和设备上运行
  • 它导航到应用程序的根屏幕(登录屏幕)
  • 它清除 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)

问题

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

编辑:答案

  1. 产品中不允许重新加载(code https://github.com/facebook/react-native/blob/0b9ea60b4fee8cacc36e7160e31b91fc114dbc0d/Libraries/Utilities/DevSettings.js#L59-L65)
  2. 反应本机重启 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(使用前将#替换为@)

DevSettings.reload() 用于 React Native 中的注销 的相关文章

  • es6中有没有办法将一个对象解构为一个新对象?

    例如 我有这个对象 const payload apple 1 dog 2 cat 3 我想将其解构为一个仅包含的新对象apple and dog const newPayload apple 1 dog 2 就像是 const apple
  • 如何计算 React-Native 中 MapView 组件的纬度和经度增量?

    我如何从 React Native 中的 MapView 组件的纬度和经度值计算增量纬度和增量经度值 谢谢 如果您有一个坐标数组并且想要一个适合所有这些点的区域 您可以执行以下操作 const regionContainingPoints
  • 使用 React Router 路由到另一个组件时 CSS 不会改变

    当我使用以下命令将我的应用程序路由到另一个组件时反应路由器 DOM https www npmjs com package react router dom CSS 不会改变 这是演示代码的简约版本 App js import React
  • 类型错误:未定义不是对象(正在评估..)

    在 render 之前的控制台中 this state data1 length 没有给出任何错误 但是一旦我在视图标签中使用它 就会给出错误 类型错误 未定义不是对象 评估 this state data1 length 如果我从视图标签
  • 在 onClick 处理程序中传递参数的最有效方法

    我正在使用内联箭头函数来更改onClick我的 React 组件中一些 div 的处理程序 但我知道这在性能方面不是一个好方法 客观来说 什么是最有效的设置方式onClick需要参数的处理程序 这是我尝试过的 1 内嵌箭头函数 change
  • 如何使 TextInput 只接受最多 2 位小数且最大值?

    这是我在 React Native 中的 TextInput 组件的代码片段 模拟器上的渲染如下所示 我想让输入字段只接受十进制数onChangeText函数 我正在更新状态的值 我有什么想法可以实现这个输入绑定的最大值吗 我要检查里面的值
  • 如何使用多重身份验证 - firebase?

    我有一个注册屏幕 其中包含 用户名 电子邮件 电话号码 密码 在本例中 我使用电话号码身份验证来验证号码 因此在用户验证他的号码后 我将他的数据保存到 firebase DB 中 所以在那之后 我将下摆导航到登录屏幕 应该包含电子邮件 密码
  • 将本地图像路径作为两个功能组件之间的 prop 传递

    我正在使用 React Native 开发一个项目 在该项目中我很难理解 props 在功能组件之间的工作原理 我的要求是创建一个可重用的按钮组件 我可以在其中传递项目内资源文件中的图像位置 这样它就会为我创建按钮 由于某种原因 如果我手动
  • 在react-router转换期间我应该如何更新redux存储?

    我面临着如何在发生反应路由器转换时更新存储的问题 在我当前的实现中 如下 在渲染下一页之前更新存储 当当前页面根据下一页的数据获取商店更新时 就会出现问题 1 当前页面毫无意义地呈现 它订阅了商店更新 因为更新的商店是针对下一页的 2 当前
  • 在 Flex 中,React Native 会溢出

    因此 对于上面的图像 我试图让 绿色 框包围动态文本 请注意蓝色和黄色文本框是如何在flex row 配置 蓝色文本框位于flex 2黄色是flex 1 一切工作正常 直到文本对于父容器来说太大 我希望绿色容器能够根据需要生长以适应弯曲的内
  • 样式组件如何影响性能?

    使用样式组件是否比样式表更会降低 Web 应用程序的速度 如果我关心性能并且没有任何依赖于 props 的样式 我是否应该放弃样式组件并使用样式表 当您有很多小组件时 同时使用样式化组件渲染 性能开销可能会很有意义 绝对值得测试以删除小元素
  • react-hook-form:检查未保存的更改

    我有一个由以下人员控制的预填写表格react hook form https react hook form com const control handleSubmit formState setValue reset useForm
  • 反应本机推送通知 onNotification 不会触发

    我正在使用 zo0r反应本机推送通知 https github com zo0r react native push notification图书馆 react 16 0 0 alpha 12 react native 0 45 1 rea
  • React Native 中文本的图像识别

    这可能是一个疯狂的问题 但我已经看到应用程序完成了 是否有任何类型的 API 可用于识别图像中的文本 Chase 识别支票上的数字的方式 或者是否有一个 API 可用于搜索 比如谷歌 基于图像的信息 例如 如果我拍了一张企业徽标的照片 谷歌
  • 如何在每个测试中更改笑话模拟函数的返回值?

    我的组件测试文件中有一个像这样的模拟模块 jest mock magic index gt navigationEnabled gt true guidanceEnabled gt true 这些函数将在我的组件的渲染函数中调用 以隐藏和显
  • 检查 `MaterialTopTabNavigator` 的渲染方法

    我想创建一个顶部选项卡导航器 并将两个屏幕 Badges js 和 Studying js 放入选项卡中 当我在设备上运行它时 出现错误 错误 元素类型无效 需要字符串 and 检查 MaterialTopTabNavigator 的渲染方
  • 处理 Redux 和 React 中错误的最佳实践

    我的 redux 操作中有一个异步函数 它在我的减速器中返回一个像这样的对象 user fetching false fetched false error null 所以基本上当我开始调用异步函数时我将 redux 状态更新为fetchi
  • 在 React Native 应用程序中哪里可以获取 EXPO DEBUG 值?

    当我尝试登录 expo 时出现此错误 exp Set EXPO DEBUG true in your env to view the stack trace 你知道我到底要在哪里设置值吗EXPO DEBUG EXPO DEBUG是一个环境变
  • React-Native 应用程序在导航时崩溃

    将 React Native App 升级到以下配置后 react 16 9 0 react native 0 61 5 react navigation 4 0 10 react navigation stack 1 10 3 react
  • React JS - 单击时更改颜色并将默认颜色放在所有其他颜色上

    我有 x 个渲染数文章预览依赖于 API 调用的组件 div div Object keys images map index i gt return div div

随机推荐

  • css伪类最后一个子问题

    我在使用时遇到问题 last child伪选择器 我有以下标记 div class apply container div
  • 状态存储在 Fluxor 中的哪里?

    我是与状态管理人员合作的新手 目前 我正在开发 blazor 应用程序 我偶然发现了 fluxor 框架 它允许通过 Flux 模式进行状态管理 Fluxor 对我来说工作得很好 但是我似乎无法弄清楚页面状态的实际存储位置 它是在缓存 数据
  • 防止浏览器弹出警告窗口

    我正在尝试在新窗口中打开 jsp 页面 使用 JavaScriptwindow open产生浏览器警告 并且在某些情况下 firefox 将默认阻止弹出窗口 有没有办法解决这个问题 这不是恶意应用程序 它是内部用户工具 大多数浏览器不会阻止
  • 在浏览器中覆盖 TAB

    如果我在输入字段中输入文本并按ENTER我所知道的所有浏览器的默认行为是提交表单 但是如果我按ENTER在文本区域内添加新行 每当我按下时 有什么方法可以模仿这种行为 缩进 而不是提交表单 TAB在文本区域内 Bespin https be
  • 从 XML 构建树结构的速度很慢

    我正在将 XML 文档解析为我自己的结构 但对于大型输入来说构建它非常慢 是否有更好的方法来做到这一点 public static DomTree
  • 无法删除 OAuth 同意屏幕

    我前段时间为一个项目创建了一个OAuth 同意屏幕 https console cloud google com apis credentials consent关于 Google API 和凭证 这是非常愚蠢的 但似乎一旦创建就无法删除它
  • 为什么 Cursor.Show() 和 Cursor.Hide() 不立即隐藏或显示光标?

    我正在为可视化工具编写一个拖动系统 当您单击并拖动时 它会移动您在窗口中看到的内容 当鼠标到达面板边缘时 我开始重新定位光标 使其永远不会离开框 它跟踪光标在框内时所处的虚拟位置 这部分代码工作正常 每当有 MouseMoved 事件并且位
  • 在Python中将整数附加到列表的开头[重复]

    这个问题在这里已经有答案了 如何在列表的开头添加一个整数 1 2 3 42 1 2 3 gt gt gt x 42 gt gt gt xs 1 2 3 gt gt gt xs insert 0 x gt gt gt xs 42 1 2 3
  • 如何在每天的特定时间触发 Slack 中的斜线命令

    我想在每天的某个时间触发 Slack 中的斜杠命令 具体来说 我想每天晚上午夜清除我的状态 从文档来看 执行此操作的唯一方法似乎是通过传入Webhook https api slack com incoming webhooks 然而 使用
  • 以计数矩阵作为响应的多项式

    根据帮助multinom 包裹nnet 响应应该是一个因子或具有 K 列的矩阵 它将被解释为每个 K 类的计数 我尝试在第二种情况下使用此函数 但出现错误 这是我所做的示例代码 response lt matrix round runif
  • Wandb 自动登录到错误的用户 - 为什么?

    我按照通常的指示进行操作 pip install wandb wandb login 但后来它从未询问我的用户 因此当我将密钥粘贴到终端时询问它是否存在于 netrc文件 但一切都是错误的 iit term synthesis brando
  • 打印时不会出现日文字符

    我正在用 python 打印 Unicode 字符 到目前为止 除了日语字符之外 我使用过的所有符号都有效 当我打印字符时 它只显示 框中的问号 符号 我怎样才能解决这个问题 当我第一次回答这个问题时 我认为这可能是 python 的问题
  • 如何使用 Spring 注入 ServletContext 进行 JUnit 测试?

    我想对用 Apache CXF 编写的 RESTful 接口进行单元测试 我使用 ServletContext 来加载一些资源 所以我有 Context private ServletContext servletContext 如果我将其
  • Solr 动态价格范围和组

    跟进问题 如何获取 solr 结果中的方面范围 https stackoverflow com questions 33956 how to get facet ranges in solr results SolR 查询 价格范围 htt
  • 瓦廷 Windows 身份验证

    我正在尝试为使用集成身份验证的 Intranet 应用程序编写 Watin 测试 我尝试测试的网页打印 Page User Identity Name 这是我测试的一些代码 if Win32 LogonUser u UserName u D
  • ColdFusion:无效的 XML 控制字符(十六进制)

    我正在尝试使用创建一个 xml 对象
  • 在 .vscode 中调试时遇到问题

    我最近在 VSCODE 中调试时遇到了一个大问题 我尝试通过搜索网站并重新安装一些扩展来自行修复它 而不是在中显示我的结果调试控制台它将以下输出写入我的terminal cd Users AVFL Documents Programming
  • 在 SPA 中加载外部脚本和样式文件

    我有一种 SPA 它使用 API 来获取数据 该 SPA 有一些实例 它们都使用通用样式和脚本文件 所以我的问题是 当我更改这些文件中的一行时 我将必须打开每个实例并更新文件 这对我来说真的很耗时 一种方法是将这些文件放在服务器中的文件夹中
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c
  • DevSettings.reload() 用于 React Native 中的注销

    问题 我正在将混合应用程序的注销功能从本机迁移到反应本机 要求 它可以在生产环境和设备上运行 它导航到应用程序的根屏幕 登录屏幕 它清除 redux 存储 很高兴有 它会取消任何飞行中的请求 最初 我们计划做这样的事情 如何重置 redux