【发布时间】:2018-01-09 03:15:38
【问题描述】:
我有一个包含项目的 flatList。在我向下滚动一点之后,一个项目被添加到顶部。这会导致列表向下移动一个单元格。我怎样才能避免这种情况?
【问题讨论】:
标签: reactjs listview react-native react-native-flatlist
我有一个包含项目的 flatList。在我向下滚动一点之后,一个项目被添加到顶部。这会导致列表向下移动一个单元格。我怎样才能避免这种情况?
【问题讨论】:
标签: reactjs listview react-native react-native-flatlist
诀窍是在将项目添加到列表时滚动到 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.topmostItemHeight 和this.state.listYOffset 的计算