Javascript 在加载数据后,ReactNative ListView设置初始滚动位置

Javascript 在加载数据后,ReactNative ListView设置初始滚动位置,javascript,react-native,react-native-listview,react-native-scrollview,Javascript,React Native,React Native Listview,React Native Scrollview,我有一个事件部分,其中有包含日期的部分标题。我需要能够跳转到特定的日期,以及将初始滚动位置设置为将来的第一个日期 为了跳转到特定的日期,我尝试将它们的y位置存储在状态中 renderSectionHeader= (sectionData, sectionID) => ( <View onLayout={(event) => { const { y } = event.nativeEvent.layout; co

我有一个事件部分,其中有包含日期的部分标题。我需要能够跳转到特定的日期,以及将初始滚动位置设置为将来的第一个日期

为了跳转到特定的日期,我尝试将它们的y位置存储在状态中

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=(sectionData,sectionID)=>(
{
const{y}=event.nativeEvent.layout;
常量sectionPosition={[sectionID]:y};
const sectionPositions=Object.assign({},this.state.sectionPositions,sectionPosition);
this.setState({sectionPositions});
}}
...
我遇到了这种方法的问题,尽管renderSectionHeader没有被调用在列表后面的元素上(由于延迟渲染)

然后,我尝试用数学方法计算位置,但这会导致在屏幕上显示每个部分的渲染,而它正在接近给定的日期

有没有办法实现我所需要的

相关的

更新

在我的应用程序中,我知道所有行的高度都完全相同

使用
contentOffset={{y:offsetY}}
而不是
setScroll
不起作用,因为它仍然需要呈现给定项之前的所有项才能起作用

使用
initialListSize={9999999}
确实有效,但会使页面速度非常慢,我已被警告不要使用它

更新2

是否可以向datasource提供我的初始内容,然后更新数据以在当前屏幕上的元素之前和之后添加额外的项目


或者,是否有一个库我还没有找到,它可以满足我的需要?

看来这可能很快就会由FlatList解决,它目前位于React Native repo的实验文件夹中

更好的列表视图-平面列表摘要:我们确实需要更好的列表视图 -就是这样

现有列表视图的主要变化如下:

  • 项目被“虚拟化”以限制内存,也就是说,在渲染窗口之外的项目被卸载,它们的内存被回收 表示当项目从列表中滚出时,实例状态不被保留 “渲染”窗口

  • 没有
    数据源
    -只是一个简单的
    数据
    形状
    数组的道具

    如果你在加载数据之前存储y位置,那么它们就不再无关了,对吗?存储的y位置很好,我可以滚动到这些位置,问题是由于延迟渲染,只渲染了部分节头,所以我无法滚动到项目f如果你想要延迟加载,那么这就是它的意思,你在加载整个
    listView
    时是懒惰的。我假设即使在本机(iOS)上也是如此你会遇到这个问题。只是尝试将initialListSize设置为一个很大的数字,这种方法很有效,尽管加载页面需要很长时间。也许在发行版中不会那么糟糕…“只是尝试将initialListSize设置为一个很大的数字”-不要这样做,这会导致精神病。我尝试使用平面列表,效果很好。我想添加一些我发现的细节:起初我的滚动关闭,然后我将此添加到我的主视图:。通过将家长设置为占据全视图,孩子知道要占据多少空间。我想给那个指针/heads取决于像我这样的人,iOS开发者学习如何反应。