我有一个事件部分,其中包含包含日期的部分标题。我需要能够跳转到特定日期,并将初始滚动位置设置为未来的第一个日期。
为了跳转到特定日期,我尝试将它们的 y 位置存储在 state 中。
renderSectionHeader= (sectionData, sectionID) => (
<View
onLayout={(event) => {
const { y } = event.nativeEvent.layout;
const sectionPosition = { [sectionID]: y };
const sectionPositions = Object.assign({}, this.state.sectionPositions, sectionPosition);
this.setState({ sectionPositions });
}}
...
我遇到了这种方法的问题,因为在列表更靠后的元素上没有调用 renderSectionHeader (由于延迟渲染)。
然后我尝试以数学方式计算位置,但这会导致每个部分的渲染显示在屏幕上,同时它正在接近给定日期。
有没有办法实现我所需要的?
有关的
React Native ListView:如何滚动到特定行
https://github.com/facebook/react-native/issues/499
更新
在我的应用程序中,我知道所有行的高度完全相同。
使用contentOffset={{ y: offsetY }}
而不是setScroll
不起作用,因为它仍然需要渲染所有项目直到给定项目才能工作。
使用initialListSize={99999999}
确实有效,但会使页面非常慢,并且我已被警告不要使用它。
更新 2
是否可以将我的初始内容提供给数据源,然后更新数据以在当前屏幕上的元素之前和之后添加额外的项目?
或者是否有一个我没有找到的库可以满足我的需要?