反应本机ListView:预先结束项

反应本机ListView:预先结束项,listview,react-native,Listview,React Native,在OnToProsperated事件上,是否可以像在onEndReached事件上附加项目一样,预先添加项目以响应本机的ListView?当前,当我在列表前添加行时,ListView会滚动到顶部 用例:我有一个带有提要的应用程序,用户可以向下滚动。当导航离开提要然后返回到提要时,我希望在顶部显示最后看到的行。然后,用户应该能够向上滚动查看她/他滚动通过的前几行,当然也可以向下滚动加载新行。假设我已经从上次看到的行开始呈现ListView,一个人为的示例如下所示: (){ 这个; }, _unsh

OnToProsperated
事件上,是否可以像在
onEndReached
事件上附加项目一样,预先添加项目以响应本机的ListView?当前,当我在列表前添加行时,ListView会滚动到顶部

用例:我有一个带有提要的应用程序,用户可以向下滚动。当导航离开提要然后返回到提要时,我希望在顶部显示最后看到的行。然后,用户应该能够向上滚动查看她/他滚动通过的前几行,当然也可以向下滚动加载新行。假设我已经从上次看到的行开始呈现ListView,一个人为的示例如下所示:

(){
这个;
},
_unshiftRows(){
var list=this.props.list;//整个列表
var lastSeenRowIndex=this.props.lastSeenRowIndex;
var prevRows=list.slice(0,i);
this.\u rows=prevRows.concat(this.\u rows);
这是我的国家({
数据源:this.state.dataSource.cloneWithRows(this.\u行)
});
},
在上面的例子中,我只是用
\u
立即触发将列表的第一部分添加到已渲染的最后一部分,因为我已经在顶部了。但是,这会导致ListView重新渲染,第一行位于屏幕顶部,而不是保持以前的位置

另一种方法是存储最后一行的
y
偏移量,并在导航回ListView时滚动到该位置。但是,该方法需要渲染当前行之前的每一行,这非常耗时。我还无法使用
滚动而不使用animationto
或通过设置
contentOffSet
获得正确的偏移量。但是,如果我使用
scrollTo
或在调用
scrollWithoutAnimationTo
之前设置超时,并允许在同一时间渲染第一行,则它确实会滚动到正确的位置。但那不是很好


我们将不胜感激。谢谢

您应该使用平面列表

尝试将新项目添加到数据源,并使用“scrolltoindex”方法

scrollToIndex(参数:对象) 滚动到指定索引处的条目,使其位于可视区域,使得视点0位于顶部,底部1个,中间0.5个。viewOffset是偏移最终目标位置的固定像素数


我喜欢react native,但我也发现像这样简单的东西很难正常工作。。祝你好运谢谢你,本。ListView也给我带来了很多挫折。嘿,你有没有想过这一点?我已经能够让它滚动到适当的位置,但它瞬间显示了令人沮丧的新内容。我最终选择了另一种方式,这可能与您的问题无关。我想回到我留下的状态中的提要。因此,使用(有争议的)导航器组件,我只需弹出到提要场景,而不是在每个路由事件上再次推送它。这样,用户将以其处于的状态被带到场景中。但这与ListView本身无关。如果你的列表中有固定高度的项目,你可能想看看。我也在寻找如何解决这个问题的线索。当我的用户上升时,我使用slice(0,20),当我的用户下降时,我使用slice(-20)。但是CX很糟糕,因为我的组件有不同的高度,我不知道如何将ListView向后滚动到正确的位置。