FlatList
中有一个getItemLayout
方法
中文网是这么介绍的
getItemLayout
是一个可选的优化,用于避免动态测量内容尺寸的开销,不过前提是你可以提前知道内容的高度。如果你的行高是固定的,getItemLayout
用起来就既高效又简单,类似下面这样:
getItemLayout={(data, index) => (
{length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}
)}
这上面是需要提前知道内容的尺寸,如果内容的尺寸不是固定的,那该怎么办呢?
我的想法是通过onLayout
方法来获取,但是不知道是不是跟上面提到的“需要提前知道内容的高度”,因为此时内容以及渲染出来了
有没有什么好的解决方法?
解决了吗,onLayout也没办法解决,Flatlist和SectionList并不会一次性渲染所有的节点,没有渲染到的不会执行onLayout方法。可能需要计算需要滚动的位置,使用scrollTo来滚动