React Native Auto scrollToIndex FlatList在长列表中不起作用

ih99xse1  于 2022-11-17  发布在  React
关注(0)|答案(1)|浏览(134)

我实现了一个按索引自动滚动FlatList的功能。当索引大于40-45时,自动滚动功能不起作用。当索引为1-39时,自动滚动功能很好。顺便说一句:当我尝试在按下时进行滚动时,只有最多39个索引起作用。
我的部分代码:

const [dataUpdated, setDataUpdated] = useState(false);
const [itemIn, setItemIn] = useState(-1);

useEffect(() => {
    if (selectedItem.id.length > 0) {
      setItemIn(items.map(object => object.itemId).indexOf(selectedItem.id));
    } else {
      setItemIn(0);
    }
  }, [items, selectedItem.id]);

 const listRef = useRef<FlatList>(null);

useEffect(() => {
    let screenListener = true;
    setTimeout(() => {
      if (itemIn >= 0 && screenListener) {
        setDataUpdated(!dataUpdated);
        listRef?.current?.scrollToIndex({
          animated: true,
          index: itemIn,
        });
      }
    }, 500);
    return () => {
      screenListener = false;
    };
  }, [dataUpdated, itemIn]);

 <ItemsList
          data={items}
          onItemPressed={onItemPressed}
          selectedItem={selectedItem}
          setSelectedItem={setSelectedItem}
          refIt={listRef}
          onScrollToIndexFailed={() => {}}
          extraData={dataUpdated}
        />
gwbalxhn

gwbalxhn1#

我找到了这样做的方法-来自Shopify的FlashList完美地处理了这样的问题。

相关问题