【问题标题】:How can I lock contentOffset y position of a FlatList when new items are added添加新项目时如何锁定 FlatList 的 contentOffset y 位置
【发布时间】:2018-01-09 03:15:38
【问题描述】:

我有一个包含项目的 flatList。在我向下滚动一点之后,一个项目被添加到顶部。这会导致列表向下移动一个单元格。我怎样才能避免这种情况?

【问题讨论】:

    标签: reactjs listview react-native react-native-flatlist


    【解决方案1】:

    诀窍是在将项目添加到列表时滚动到 Y 位置(无动画)

    function itemAdded() {
        //...
        const listYOffset = this.state.listYOffset;
        const cellHeight = this.topmostItemHeight; 
        const newYOffset = listYOffset + cellHeight;
        this.listRef.scrollToOffset({ offset: newYOffset, animated: false });
        this.setState({ listYOffset: newYOffset });
    }
    

    然后在 flatlist 中,将此 this.topmostItemHeight 设置为添加项目的高度。

    请注意,我的代码用于一次添加一项,但基本原理是相同的

    【讨论】:

    • 您应该添加更多代码示例来改进这一点,即有人如何知道this.topmostItemHeightthis.state.listYOffset 的计算
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多