将数据添加到FlatList总是显示第一个孩子

Sud*_*Plz 6 react-native react-native-listview react-native-flatlist

这是我们的FlatList,打个招呼:

<FlatList
    data={this.state.dates}
...
/>
Run Code Online (Sandbox Code Playgroud)

我们用以下日期输入:

this.state = {
    dates: [
        '21/06/2019',
        '22/06/2019',
        '23/06/2019',
    ]
};
Run Code Online (Sandbox Code Playgroud)

然后,当可见日期更改(onViewableItemsChanged)时,如果我们到达第一个项目(21/06/2019),则会添加数据,以便新状态变为:

dates: [
        '18/06/2019',
        '19/06/2019',
        '20/06/2019',
        '21/06/2019',
        '22/06/2019',
        '23/06/2019',
]
Run Code Online (Sandbox Code Playgroud)

问题:

我们之后预先考虑的数据,而不是仍然看到21/06/2019(这是在前面加上发生的日期),我们现在看到19/06/2019

这是因为在引擎盖下,21/06/2019以前是索引0,但在前缀之后,索引0对应于19/06/2019

我们想要什么:

我试图做到这一点,以便在添加数据后的一天保持不变

请不要告诉我使用,scrollToPosition因为这确实是黑客,而不是解决方案。有什么好办法解决这个问题吗?

谢谢

SiS*_*iSa 2

有一个未记录的道具maintainVisibleContentPosition可以ScrollView做你想做的事情,但不幸的是它不适用于android

我找到了另一种解决方法,即使用onScroll保留最新的 y 偏移量,并使用onContentSizeChange添加新项目之前和之后保存内容高度,并计算内容高度的差值,并将新的 y 偏移量设置为最新的 y 偏移量 + 内容高度差!

我也在github 上打开了一个问题,但还没有任何完整的解决方案
感谢sgtpepper43提供未记录的 iOS 解决方案