2016-08-16 97 views
1

我試圖在反應本機中設置ListView的初始滾動位置。設置React Native ListView的初始滾動位置

現在,我這樣做:

componentDidMount() { 
    let i = this.props.images.indexOf(this.props.current); 
    if(i != -1) { 
    this.refs.listView.scrollTo({ x:i*this.props.width, y:0, animated:false }); 
    } 
} 

其中images道具爲ListView數據源中,current道具,我想最初滾動到,和width道具是組件的寬度。 (組件水平滾動)。

這是有效的,但是在初始渲染和調用componentDidMount之間存在一個延遲,在列表滾動之前給我一個列表末尾的快照。

是否有設置列表的初始滾動位置的方法?或者更好的方式來擺脫這種閃光?

+0

在iOS上,您可以使用'contentOffset'屬性:https://facebook.github.io/react-native/docs/scrollview.html#contentoffset - 不確定什麼是最好的x平臺方式。 – jevakallio

+0

謝謝!我沒有看到。我想我忘了查看底層滾動視圖的屬性。把它作爲答案,我會給它一張支票。 – nicholas

回答

2

在iOS上,您可以使用ScrollView#contentOffset設置ListView的初始滾動位置,該位置繼承ScrollView的屬性。

如果您正在尋找Android解決方案,您所呼叫的ListView.scrollTo方法似乎是一般情況下最好的選擇。

這就是說,如果我正確地解釋你的代碼示例,你使用ListView作爲分頁的水平列表,也許在pagingEnabled屬性的幫助下?如果是這種情況,在Android上,您可以使用ViewPagerAndroid來代替,並設置initialPage屬性。