我有一個包含日期部分標題的事件部分。我需要能夠跳轉到特定日期,並且將初始滾動位置設置爲將來的第一個日期。ReactNative ListView設置數據加載後的初始滾動位置
爲了跳轉到特定的日期,我嘗試在狀態中存儲它們的y位置。
renderSectionHeader= (sectionData, sectionID) => (
<View
onLayout={(event) => {
const { y } = event.nativeEvent.layout;
const sectionPosition = { [sectionID]: y };
const sectionPositions = Object.assign({}, this.state.sectionPositions, sectionPosition);
this.setState({ sectionPositions });
}}
...
我碰到了這種方法的問題,雖然作爲renderSectionHeader不叫上進一步下降的列表(由於懶惰渲染)的元素。
我已經嘗試過從數學角度計算位置,但是這樣會導致每個部分的渲染都在屏幕上顯示,而它正在靠近給定日期。
有沒有辦法實現我所需要的?
相關
React Native ListView: How to scroll to a particular row
https://github.com/facebook/react-native/issues/499
UPDATE
在我的應用程序,我知道所有的行都是完全一樣的高度。
使用contentOffset={{ y: offsetY }}
而不是setScroll
不起作用,因爲它仍然需要渲染所有項目直到指定的項目才能工作。
使用initialListSize={99999999}
確實有效,但會使頁面變得非常緩慢,並且我被警告不要使用它。
更新2
是否可以提供我最初的內容,數據源,然後更新數據之前和當前屏幕上的內容後添加額外的項目?
還是有一個圖書館,我還沒有找到我需要什麼?
如果妳存儲加載數據之前y的位置,所以他們r無關了,對不對? – gran33
存儲的y位置是好的,我可以滾動到這些,問題是隻有一些部分標題呈現由於惰性渲染,所以我不能滾動到列表下的項目 – Tom
「'你不能讓你的蛋糕並吃它'',如果你想延遲加載,所以這是它的意義,你懶加載整個'listView'。我認爲,即使在本機(iOS)上你也會遇到這個問題。 – gran33