什么是react-native中的“仅布局视图删除”优化?

Ilj*_*lja 8 react-native

反应本土暴露了美国在某些道具View一样testID是本机测试超级有用,但下面的注释重视他们

这将禁用此视图的“仅布局视图删除”优化!

搜索了一会儿之后,我无法找到描述此优化是什么的信息。重要吗?如果仅在开发模式/开发目标中设置这些测试ID是可行的?即他们将是未定义的否则?

Art*_*tal 12

当RN从影子节点树创建本机视图时,它将执行一些优化。构造本机层次结构时,可以删除实际上不显示在屏幕上的视图(不绘制任何内容或仅在JSX中用于包含和布局其子视图)。这就是为什么将它们称为“仅布局”视图的原因。

就像该警告所暗示的那样,testID即使是“仅布局”视图,带有prop 的视图也不会被删除,因此在执行端到端测试时它实际上将存在。

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

  1. 您可能没有太多意见, testID
  2. 大多数带有的视图testID可能不是“仅布局”视图,因此,无论您使用此道具还是不考虑优化,它都没有区别。

如果确实有带有的“仅布局”视图testID,则将其移动testID到更合适的视图会更容易。

  • 您能否定义什么是“仅布局”视图以更好地理解答案? (4认同)
  • 答案中提到了它,但我会尝试用另一种说法来表达:它是在JSX中声明的视图,但实际上并未显示在屏幕上,并且不操纵其他视图的呈现,因此可以展平(从本机视图层次结构)以提高性能 (2认同)