Is it possible to keep a ScrollView scrolled to the bottom?
Solution 1:
For React Native 0.41 and later, you can do this with the built-in scrollToEnd
method:
<ScrollView
ref={ref => {this.scrollView = ref}}
onContentSizeChange={() => this.scrollView.scrollToEnd({animated: true})}>
</ScrollView>
Solution 2:
For anyone writing function component that can use hook,
import React, { useRef } from 'react';
import { ScrollView } from 'react-native';
const ScreenComponent = (props) => {
const scrollViewRef = useRef();
return (
<ScrollView
ref={scrollViewRef}
onContentSizeChange={() => scrollViewRef.current.scrollToEnd({ animated: true })}
/>
);
};
Solution 3:
Use onContentSizeChange to keep track of the bottom Y of the scroll view (height)
https://facebook.github.io/react-native/docs/scrollview.html#oncontentsizechange
var _scrollToBottomY
<ScrollView
onContentSizeChange={(contentWidth, contentHeight)=>{
_scrollToBottomY = contentHeight;
}}>
</ScrollView>
then use the ref name of the scroll view like
this.refs.scrollView.scrollTo(_scrollToBottomY);