Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
Cómo mostrar scrollToBottom en ScrollView cuando el usuario no está en la parte inferior de la pantalla - React Native

Estoy desarrollando una aplicación de chat en la que tengo una ChatScreen , y supongamos que el usuario se desplaza hacia arriba a través del chat, ahora debería aparecer un botón scrollToBottom solo si el usuario no está en la parte inferior (al igual que las aplicaciones de chat populares), así que probé el siguiendo:

Primero traté de detectar cuándo el usuario se desplaza en un ScrollView , luego, usando onScroll prop nativeEvent , detecté si el usuario no está en la parte inferior, es decir, se desplazó hacia arriba. Luego, si es el caso, muestro el botón que debería aparecer en la esquina inferior derecha de la ChatScreen.

A continuación se muestra el código para mi enfoque. (¿Es posible devolver un componente View dentro de onScroll prop si se cumple la condición?)

 <ScrollView ref={scrollViewRef} onScroll={({nativeEvent}) => { const isCloseToBottom = nativeEvent.layoutMeasurement.height + nativeEvent.contentOffset.y > nativeEvent.contentSize.height - 30; if (!isCloseToBottom) { console.log('show scroll to bottom button') return ( <TouchableOpacity style={{position:'absolute', bottom:40, right:10, backgroundColor:'grey'}} onPress={() => scrollViewRef.current.scrollToEnd()}> <Icon ... /> </TouchableOpacity> ) } }} > ... </ScrollView>

Así que esto es lo que intenté, aunque cuando depuré usando console.log('show scroll to bottom button') como puede ver en el código, se activa, pero no puedo renderizar/ver el componente Button en la pantalla. (Intenté configurar opacity:1 & zIndex:1 en el accesorio de estilo de <TouchableOpacity /> pero aún no puedo ver).

¿Qué estoy haciendo mal? Cualquier solución a este problema sería muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

De acuerdo, la solución temporal es simplemente crear un estado y hacer una representación condicional. (Creo que este enfoque no sería óptimo porque estaríamos configurando el estado cada vez que el usuario se desplaza hacia arriba o cada vez que se activa onScroll ).

 const [isScrolling, setIsScrolling] = useState(false); <ScrollView ref={scrollViewRef} onScroll={({nativeEvent}) => { const isCloseToBottom = nativeEvent.layoutMeasurement.height + nativeEvent.contentOffset.y > nativeEvent.contentSize.height - 30; if (!isCloseToBottom) { setIsScrolling(true); } else setIsScrolling(false); }} > ... </ScrollView> { isScrolling && // return your component here... }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!