3

ReactNative 앱에서 ScrollView 또는 ListView를 사용하고 새로운 데이터가 들어 왔을 때 기본 동작은 Scroll 구성 요소의 위치를 ​​유지하는 것입니다. 즉, ScrollView의 중간에있을 때 높이 20의 새 데이터가 들어 오면 화면 항목이 20 개씩 슬라이드되며 화면에서 벗어나는 경우가 있습니다.ScrollView 또는 ListView에서 위치를 유지하려면 어떻게해야합니까?

위치를 유지/추적 할 수있는 방법이 있습니까? 예를 들어 높이 20의 새 데이터가 입력되면 위치는 화면 항목의 현재 상태가 화면에 계속 표시되도록 위치를 자동으로 20만큼 조정합니다. 미리 감사드립니다. 아주 원활하지 비록

+1

이것은 도움이 될 것입니다. http://stackoverflow.com/a/36803008/3790046 –

+1

@HenrikR 네가 그렇게하는 확실한 대안이지만 onContentSizeChange에서 위치 변경을 호출합니다. 즉 콘텐츠의 위치를 ​​조정합니다. 크기가 이미 바뀌었고 그 이후에 위치가 바뀌므로 나쁜 UX에 맞서야합니다. – Dave

답변

1

내가, 작업 솔루션을 가지고, 작업을 수행합니다

handleScroll = (event) => { 
    this.scroll = event.nativeEvent.contentOffset.y 
    if (this.ready && this.scroll < SCROLL_TRIGGER) { 
    // load more stuff here 
    } 
} 

handleSize = (width, height) => { 
    if (this.scroll) { 
    const position = this.scroll + height - this.height 
    this.refs.sv.scrollTo({x: 0, y: position, animated: false}) 
    } 
    this.height = height 
} 

// render: 

<ScrollView ref="sv" 
    scrollEventThrottle={16} 
    onScroll={this.handleScroll} 
    onContentSizeChange={this.handleSize} 
> 
    {content} 
</ScrollView> 

사람이 부드러운 무언가를 한 경우, 저희에게 알려주십시오!