我实现了一个按索引自动滚动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}
/>
1条答案
按热度按时间gwbalxhn1#
我找到了这样做的方法-来自Shopify的FlashList完美地处理了这样的问题。