首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numColumns破坏scrollToIndex反应本机FlatList

numColumns破坏scrollToIndex反应本机FlatList
EN

Stack Overflow用户
提问于 2019-04-01 13:13:09
回答 1查看 1.5K关注 0票数 1

我使用react本机的FlatList来显示项目列表,并检查哪些项目目前是可查看的。在我的项目中,有一个项目标记为mostUsed,如果该项目不可查看,则在顶部显示一个链接,用户可以单击该链接并使用scrollToIndex滚动到该项目。scrollToIndex在不设置numColumns的情况下工作得很好,当我设置numColumns={2}时,会得到scrollToIndex out of range: 9 vs 4错误。

代码语言:javascript
复制
setScrollIndex = () => {
  if (this.state.scrollIndex !== 0) {
    return;
  }

  for (let i = 0; i < this.state.items.length; i++) {
    const items = this.state.items;

      if (items[i] && items[i].mostUsed) {
        this.setState({
          scrollIndex: i,
        });
      }
  }
};

// scroll to index function
scrollToIndex = () => {
  this.flatListRef.scrollToIndex({
    animated: true,
    index: this.state.scrollIndex,
  });
};

<FlatList
  data={this.state.items}
  numColumns={2}
  keyExtractor={(item, index) => index.toString()}
  ref={ref => {
    this.flatListRef = ref;
  }}
  showsVerticalScrollIndicator={false}
  onViewableItemsChanged={this.handleViewableItemsChanged}
  viewabilityConfig={this.viewabilityConfig}
  renderItem={({ item, index }) => (
    <Card  
      title={item.title}
      description={item.description}
      mostUsed={item.mostUsed}
      style={{ width: item.width }}
    />
  )}
/>

世博小吃

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-01 13:45:20

看起来,如果FlatListscrollToIndex高于1,则numColumns将改变其查看索引的方式。

将其命名为scrollToRowIndex可能更正确,因为在多列情况下,它不适用于项索引。

对于你的案子,这件事在世博会上对我起了作用:

代码语言:javascript
复制
scrollToIndex = () => {
  this.flatListRef.scrollToIndex({
    animated: true,
    index: Math.floor(this.state.scrollIndex / numColumns),
  });
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55456023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档