用ScrollView设计时间线,在componentDidMount里使用scrollTo,安卓下面不执行的问题



  • 代码如下:

    componentDidMount() {
        this.refs.scrollView.scrollTo(0, (this.state.selectedKey-1) * 100 + 20);
    }
    

    这个在ios下面,是按预设的数据滚动到指定位置的,但是安卓下面没有并没有发生变化。

    于是我修改了一下变成:

    	componentDidMount() {
    		if(Platform.OS == 'ios') {
    			this.refs.scrollView.scrollTo(0, (this.state.selectedKey-1) * 100 + 20);
    		}else if(Platform.OS == 'android') {
    			setTimeout(() => {
    				this.refs.scrollView.scrollTo(0, (this.state.selectedKey-1) * 100 + 20);
    			}, 0);
    		}
    	}
    

    这时候安卓下面就生效了,不清楚为何,也有可能是我用法不对,求研究过的大神指点。因为后面还会有一些类似的需求,问题希望能解决掉。



  • setTimeout 0 是前端常见的黑魔法。。。它可以把紧密排在一起的事件队列变“稀疏”一些(setTimeout的事件异步执行,哪怕是0毫秒延迟,也是等我忙完别的再处理你),可以解决很多疑难杂症。