React native在View上公开了一些props ,比如testID,这些props 对本机测试非常有用,但附带了以下说明

这将禁用此应用程序的"仅布局视图删除"优化

搜索了一段时间后,我无法找到描述这种优化的信息.这有意义吗?如果只能在开发模式/dev target中设置这些测试id是可行的?i、 e.否则,它们将是未定义的?

推荐答案

当RN从shadow nodes树创建本机视图时,它会执行一些优化.在构建本机层次 struct 时,可以删除实际上没有显示在屏幕上的视图(不绘制任何内容,或者只是在JSX中用于包含和布局其子对象).这就是为什么它们被称为"仅布局"视图.

正如此警告所示,即使是"仅布局"视图,也不会删除带有testIDprops 的视图,因此在执行e2e测试时,它实际上会在那里.

一般来说,渲染大量视图可能会导致性能问题,但在某些视图上使用testID不会产生明显的性能差异,因为:

  1. 你可能没有太多的意见,与一个testID
  2. 大多数带有testID的视图可能不是"仅布局"视图,因此使用此props 与不考虑优化没有任何区别.

如果您的视图"仅布局"为testID,那么将testID移动到更合适的视图会更容易.

React-native相关问答推荐

我们如何才能将我们自己的应用程序(IOS)排除在共享表中?

React-Native:请纠正我对状态如何工作的误解 - 动态文本输入

FBSDK 和 LinkingManager 的 AppDelegate.m

React native flexbox - 如何做 percentages || columns || responsive || grid etc

判断状态对象是否为空

No component found for view with name "ARTShape"

IntelliSense 在第一项后无法在 React Native 样式表中工作

如何在 React-Native 中创建检测自动位置的map

什么时候适合在 React 中使用构造函数?

因 JVM 堆空间耗尽而导致守护进程到期?

api.get(...).then(...).catch(...).finally 不是函数

如何在 React Native 中将静态图像拉伸为背景?

由于端口 8081 sunproxyadmin,无法打包 react native

当我导航到react-native 的新页面时,如何强制卸载组件?

将图标添加到drawer抽屉react-navigation v5

Android 构建错误AndroidManifest.xml requires a placeholder substitution

如何在 Text 中围绕 Text 包裹 TouchableOpacity?

[React-Native][Jest]SyntaxError: Unexpected token import

zoom 到指定的标记 react-native-maps

从标题中的按钮导航到不同的屏幕