我正在使用新的FlatList成分并想利用ScrollToIndex
(or ScrollToEnd
)在生命周期方法中,例如componentDidMount
.
我有一个包含 100 个项目的数组,我不想从第一个项目开始渲染,而是从一开始就开始渲染。让我们说第 50 项。当。。。的时候FlatList
一次只显示一项,它可以通过一些 hack 来按需要工作,如下所述:https://github.com/facebook/react-native/issues/13202
componentDidMount() {
let wait = new Promise((resolve) => setTimeout(resolve, 500)); // Smaller number should work
wait.then( () => {
this.refs.flatlist.scrollToIndex({index: 4, animated: true});
});
}
这个片段使scrollToIndex
run after调用的几毫秒componentDidMount
.
但是当我使用FlatList
当视图包含 3x3 网格时,我根本无法让它运行。当我使用scrollToIndex
并且索引超出了指定的 propsinitialNumToRender
,我只得到一个错误scrollIndex out of range $ID
我无法理解。所提供的数据数组包含所有项目,例如 100 个项目。当我让我们scrollToEnd
,它只停止在中间的某个地方,而不是结束。对我来说,它看起来像是某种错误,我不知道如何在初始渲染后滚动到 $X 项目。你能帮助我吗?
我很感激任何形式的帮助或评论。
我在 iOS 和 Android(模拟器和设备)上尝试了 React-Native v0.43.0 和 v0.44.0,结果总是一样的。
您是否正在设置getItemLayout
FlatList 上的 prop?
检查 React Native 代码中的内容scrollToIndex
- https://github.com/facebook/react-native/blob/master/Libraries/Lists/FlatList.js#L308
不过,只有当您的物品具有设定的高度时,这才真正起作用。对于高度可变的项目似乎还没有合适的解决方案。我只能通过设置使其与可变高度一起工作initialNumToRender={indexToScrollTo + 1}
然后使用scrollToOffset
代替scrollToIndex
(将偏移设置为您要滚动到的项目的偏移)。这有明显的性能问题,如果您有很长的列表或您的项目具有复杂的渲染,那么这确实不理想。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)