我正在尝试使用功能组件中的scrollToIndex()
钩子从FlatList访问scrollToItem()
方法或useRef
方法。我希望能够在组件中使用flatListRef.current.ScrollToIndex()
,类似于基于类的组件使用this.flatListRef.ScrollToIndex()
的方式:
const flatListRef = useRef(React.createRef)
<FlatList
data={items}
renderItem={({ item }) => <Item item={item} />}
keyExtractor={item => item.id.toString()}
contentContainerStyle={styles.card}
horizontal={true}
showsHorizontalScrollIndicator={false}
ref={flatListRef}
/>
console.logging flatListRef.current
没有显示我正在寻找的上述方法。
答案 0 :(得分:2)
您无需使用createRef
创建引用,只需使用useRef()
。另一个重要的事情是正确使用scrollToIndex
。请参见documentation和下面的代码。
代码:
const CustomFlatList = () => {
const flatListRef = useRef(); // useRef
return (
<View>
<FlatList
data={items}
renderItem={({ item }) => <Text style={{width: 100}}> {item.id} </Text> }
keyExtractor={item => item.id.toString()}
contentContainerStyle={styles.card}
horizontal={true}
showsHorizontalScrollIndicator={false}
ref={flatListRef} // create ref
/>
<TouchableHighlight onPress={() => flatListRef.current.scrollToIndex({index: 4, animated: true })}>
<Text> ScrollToIndex </Text>
</TouchableHighlight>
</View>
)
}
工作示例: