我有一个通过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}
/>
发布于 2022-11-14 15:24:28
我找到了办法--来自Shopify的FlashList完美地处理了这样的责骂。
https://stackoverflow.com/questions/74431915
复制相似问题