首页 > 解决方案 > 调用 builder.load 然后复制组件

问题描述

我目前正在使用 ui/builder 加载带有 xml 和 js 文件的组件,如下所示:

let component = builder.load({
    path: 'pages/path/to/component',
    name: 'component'
});

然后我将组件添加到现有视图中。这一切都很好,但我实际上调用了数百次,因为父级包含许多这些组件(类似于包含很多项目的中继器)。builder.load 方法是否每次都需要使用 xml/js 文件的路径调用,还是可以复制内存中的组件?以这种方式做事是否会带来性能优势,或者 nativescript 构建器是否已经保留了引用组件的缓存?

标签: nativescript

解决方案


这可能会影响性能,因为构建器每次都会解析 XML 以创建 JavaScript 实例,您可能会在第一次调用构建器后保留对返回组件的引用。

但它可能仍然会影响性能,因为您要加载 100 多个组件。您必须考虑ListView根据需要使用它来回收未使用的视图。

如果您使用构建器/中继器,您实际上是在屏幕上创建了 100 个元素,当ListView使用它时,它只会创建那些在屏幕上可见的元素。当您向下或向上滚动时,它将重用那些不在屏幕上的元素,从而大大提高性能。


推荐阅读