我正在玩React Native并试图使用用户可以滚动的ListView组件创建一长串卡片(非常类似于Facebook当前的应用程序)。我注意到的是,当我创建大量的卡片时,应用程序的内存占用量会随着滚动它们而继续增长。除非我滚动,否则它不会增长。
我对此的解释是,ListView只是在它们变得可见之前呈现视图,这正是它应该做的事情。然而,我没有看到的是,一旦它们从屏幕滚动而不可见,它就会释放视图。是否需要设置一些属性才能启用此功能?如何在React Native中管理长列表的内存?
答案 0 :(得分:1)
ListView保留其所有行组件,因为它们可能是有状态的(即具有this.state
)但您可以告诉它使用removeClippedSubviews
prop释放基础本机视图:
这是一个由RCTView公开的特殊性能属性,当有许多子视图时,它们可用于滚动内容,其中大部分都在屏幕外。要使此属性生效,必须将其应用于包含许多超出其边界的子视图的视图。子视图还必须具有溢出:隐藏,包含视图(或其中一个超级视图)也应如此。
https://facebook.github.io/react-native/docs/view.html#removeclippedsubviews。
答案 1 :(得分:1)