Animation 组件将卸载时反应本机取消动画延迟

Animation 组件将卸载时反应本机取消动画延迟,animation,react-native,settimeout,delay,Animation,React Native,Settimeout,Delay,我对动画有点问题。我试着在我的应用程序上做一个关于错误的闪屏信息。为此,我创建了一个新组件,该组件可以放在一个特定的视图中,也可以不放在一个特定的视图中,当错误从我的存储触发时,我的组件的状态将通过componentWillReceiveProps进行更改,如果出现错误消息,则设置为可见 因此,如果没有错误消息,我的渲染函数将返回false值,但如果有错误消息,我将使用以下动画代码运行渲染函数: //轻松输入轻松输出操作 动画序列([ 动画。计时(this.state.translateY{ t

我对动画有点问题。我试着在我的应用程序上做一个关于错误的闪屏信息。为此,我创建了一个新组件,该组件可以放在一个特定的视图中,也可以不放在一个特定的视图中,当错误从我的存储触发时,我的组件的状态将通过
componentWillReceiveProps
进行更改,如果出现错误消息,则设置为可见

因此,如果没有错误消息,我的渲染函数将返回false值,但如果有错误消息,我将使用以下动画代码运行渲染函数:

//轻松输入轻松输出操作
动画序列([
动画。计时(this.state.translateY{
toValue:40,
放松:放松。反弹,//像球一样
持续时间:450,
}),
动画。延迟(3000),
动画。计时(this.state.translateY{
toValue:0,
持续时间:300,
}),
]).start(()=>{
this.props.clearMessage();

this.setState({visible:false});//为
Animated.start()提供的函数调用
时使用一个对象声明动画是否成功运行到结尾。如果卸载组件,React Native也会隐式取消动画。因此,请在回调中检查
finished
-属性,并且仅当动画运行到结尾时才检查
setState

因此,这应该是可行的:

。。。
]).开始((完成)=>{
如果(完成,完成){
this.props.clearMessage();
this.setState({visible:false});
}
});
(请注意,如果您手动停止动画,例如使用
Animated.stop()
或使用相同的
Animated.Value
启动另一个动画,则
finished
-属性也将变为
false


请参阅:

文档中提到了一种
stopAnimation
方法。您尝试过它吗?是的。谢谢Hamaide,但是,是的,我也尝试过它,但是
Animated.sequence
找不到函数
stopAnimation