2016-08-16 96 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属性。