Estoy ocultando un encabezado similar a una barra de navegación en el desplazamiento. Que está funcionando bien excepto por un detalle. La animación se retrasa cuando el desplazamiento llega a la parte superior (que es cuando el encabezado debe volver a animarse en la visión), porque cuando llega a la parte superior hace esa animación de "rebote". ENTONCES se dispara mi animación, que es algo así como 500ms tarde.
El problema es que no puedo descifrar cómo activarlo instantáneamente cuando el pergamino llega a la parte superior.
He estado probando diferentes tipos de accesorios para ScrollView, he intentado usar estados para detectar cuándo la posición es adecuada para un disparador. He probado todos los diferentes condicionales que pude imaginar.
Todas mis soluciones terminaron con la activación de la animación cuando el desplazamiento llega a la parte superior Y la animación de rebote finalizó, quiero que se active en el mismo momento en que la posición de desplazamiento llega a 0.
Así es como se ve el código en este momento:
let viewPosition = 0; const scrollToHide = (event) => { const currentPosition = event.nativeEvent.contentOffset.y; const direction = currentPosition > 0 && currentPosition > viewPosition ? "down" : "up"; const isDescending = direction === "down"; if (isDescending !== isHidden) { LayoutAnimation.configureNext("my animation here"); setIsHidden(!isHidden); } // To not trigger animation when scroll goes beyond top end. (the bouncing I'm talking about) if (currentPosition < 0) { setIsHidden(false); } // To not trigger animation if the scroll position is not near the top if (currentPosition > 10) { setIsHidden(true); } viewPosition = currentPosition; }; <ScrollView onScroll={scrollToHide} />