我应该在卸载时明确停止 React Native 动画吗?

Leo*_*sov 3 react-native react-animated

假设我用 开始动画Animated.timing().start(),具体时间(在安装上或在某些外部事件上)并不重要。然后我使用 anAnimated.View来渲染动画。

假设它在组件卸载之前没有完成。

我应该在stop()卸载时显式调用动画(实际上,所有仍然可以运行的动画),还是会隐式清理它?大多数手动分配的资源不会被隐式释放(除非它们附加到组件,如钩子),但动画似乎会这样做。

art*_*pse 10

我没有找到任何关于此的文档,但我查看了我们正在使用的版本(0.59.8)的代码。

简短的答案是否定的,不需要显式停止动画,它由 React Native 管理。

长答案遵循我下面的代码分析。

  • 当您为某个值启动动画时,该动画将绑定到Animated.Value. (或者作为_animation,或者作为_tracking。)

  • Animated.Value当您在 an 上使用 时Animated.Component,该值将作为 附加到组件_propsAnimated

  • 在 componentWillUnmount 上_propsAnimated进行__detach编辑,然后通过调用(这是 Animated.Value 的公共函数)__detachAnimated.Value停止动画。Animated.Value.prototype.stopAnimation