채팅과 같은 앱의 경우 ScrollView
최신 메시지가 이전 메시지 아래에 표시되기 때문에 구성 요소를 맨 아래로 스크롤 하고 싶습니다 . 스크롤 위치를 조정할 수 있습니까 ScrollView
?
답변
대한 기본 0.41 반응 이후 , 당신이 할 수있는 내장 scrollToEnd
방법 :
<ScrollView
ref={ref => {this.scrollView = ref}}
onContentSizeChange={() => this.scrollView.scrollToEnd({animated: true})}>
</ScrollView>
답변
onContentSizeChange를 사용하여 스크롤 뷰의 하단 Y (높이)를 추적합니다.
https://facebook.github.io/react-native/docs/scrollview.html#oncontentsizechange
var _scrollToBottomY
<ScrollView
onContentSizeChange={(contentWidth, contentHeight)=>{
_scrollToBottomY = contentHeight;
}}>
</ScrollView>
그런 다음 스크롤 뷰의 참조 이름을 다음과 같이 사용하십시오.
this.refs.scrollView.scrollTo(_scrollToBottomY);
답변
다음은 내가 모을 수있는 가장 간단한 해결책입니다.
<ListView
ref={ref => (this.listView = ref)}
onLayout={event => {
this.listViewHeight = event.nativeEvent.layout.height;
}}
onContentSizeChange={() => {
this.listView.scrollTo({
y: this.listView.getMetrics().contentLength - this.listViewHeight
});
}}
/>;
답변
후크를 사용할 수있는 함수 컴포넌트를 작성하는 모든 사람을 위해
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 })}
/>
);
};
답변
이 해결책을 시도하십시오
xcode 10.0
RN : 56.0.0
<ScrollView ref="scrollView"
onContentSizeChange={(width,height) => this.refs.scrollView.scrollTo({y:height})}> </ScrollView> // OR height - width
답변
2020 년 이후의 누군가가 기능 구성 요소로이를 달성하는 방법을 궁금해하는 경우. 이것이 내가 한 방법입니다.
ref={ref => scrollView = ref }
onContentSizeChange={() => scrollView.scrollToEnd({ animated: true })}>
답변
react-native-invertible-scroll-view
모듈을 사용하여 스크롤 / 목록보기를 반전 한 다음 간단히 호출 ref.scrollTo(0)
하여 하단으로 스크롤 할 수 있습니다.
모듈 설치 :
npm install --save react-native-invertible-scroll-view
그런 다음 구성 요소를 가져옵니다.
import InvertibleScrollView from 'react-native-invertible-scroll-view';
그런 다음 a 대신 다음 JSX를 사용하십시오 ScrollView
.
<InvertibleScrollView inverted
ref={ref => { this.scrollView = ref; }}
onContentSizeChange={() => {
this.scrollView.scrollTo({y: 0, animated: true});
}}
>
{ /* content */ }
</InvertibleScrollView>
이것은 react-native-invertible-scroll-view
전체보기의 내용을 뒤집기 때문에 작동 합니다. 뷰의 자식도 일반 뷰와 반대 순서로 렌더링됩니다. 첫 번째 자식이 맨 아래에 나타납니다 .