2017-01-02 75 views
0

我想弄清楚什么时候Animated.spring事件已经完成,所以我可以更新一些状态。Animated.spring结束事件

我试过这个,但是在这里抛出一个未定义的错误;

  Animated.spring(
      this.state.pan, 
      { toValue: { x: 0, y: -500 } } 
     ).start().finish(
      this.setState({ 
       carousel: false, hasNotification: false 
      }) 
     ); 

其他处理这个问题的方法?

感谢

回答

0

按照documentation

开始需要完成回调时的动画完成,将被调用。如果动画完成,因为它完成正常运行,完成回调将被调用{finished:true},但是如果动画完成,因为停止在它完成之前被调用(例如,因为它被手势中断或另一个动画),那么它将收到{finished:false}。

因此,我认为这应该工作:

Animated.spring(this.state.pan, { toValue: { x: 0, y: -500 } }).start(()=>{ 
     this.setState({ 
      carousel: false, hasNotification: false 
     }) 
     }); 
0

您可以通过一个可选的回调:

Animated.spring(
      this.state.pan, 
      { toValue: { x: 0, y: -500 } } 
     ).start(this.stopAnimation.bind(this)) 

stopAnimation() 
{ 
    this.setState({ 
     carousel: false, hasNotification: false 
    }) 
}