Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
why is snapToInterval not working for longer arrays in flatlist?

for some reason the snapToInterval isn't snapping properly

code:

const ITEM_HEIGHT=60
   <FlatList
    data={Array(150)
      .fill('')
      .map((_, index) => ({ key: index, title: index.toString() }))}
    renderItem={({ item }) => (
      <View style={{ height: ITEM_HEIGHT, alignItems: 'center', justifyContent: 'center' }}>
        <Text >{item.title}</Text>
      </View>
    )}
    getItemLayout={(data, index) => ({ length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index })}
    initialScrollIndex={21}
    initialNumToRender={10}
  />

and here's how it looks like:
enter image description here

how do I fix this?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

you have to set

snapToInterval

prop to the height of your item "60". you don't need getItemLayout if you don't want to use flatlist's snaptoindex or scrollToItem methods. also, I think you forgot to set the value for ITEM_HEIGHT in your getItemLayout prop.

about 4 years ago · Juan Pablo Isaza Denunciar

0

I solved the problem from here

just add snapToOffsets like this:

const ITEM_HEIGHT=60

<FlatList
    data={Data}
    renderItem={({ item }) => (
        <View
            style={{
                height: ITEM_HEIGHT,
                alignItems: 'center',
                justifyContent: 'center',
            }}>
            <Text style={{ fontWeight: 'bold',color:'white' }}>{item.title}</Text>
        </View>
    )}
    keyExtractor={(_, index) => index.toString()}

    getItemLayout={(_, index) => {
        return { length: ITEM_HEIGHT, offset: ITEM_HEIGHT* index, index };
    }}
    initialScrollIndex={21}
    showsVerticalScrollIndicator={false}
    initialNumToRender={3}
    windowSize={9}
    snapToOffsets={Data.map((x, i) => (i*ITEM_HEIGHT))}
/>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda