Не удается получить доступ к методу scrollToIndex () в React Native, используя хук useRef - PullRequest
2 голосов
/ 09 октября 2019

Я пытаюсь получить доступ к методу scrollToIndex() или scrollToItem() из FlatList, используя хук 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 не показывает вышеупомянутые методыЯ ищу.

1 Ответ

2 голосов
/ 09 октября 2019

Вам не нужно создавать ссылку с createRef, вы можете просто использовать useRef(). Еще одна важная вещь - правильно использовать scrollToIndex. См. документацию и код ниже.

Код:

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>
  )
}

Рабочий пример:

https://snack.expo.io/B1rfdbsuS

...