优化思路
首先应该尽量少用setState
,如果一定要使用改变状态来处理动画,那可以用原生的setNativeProps
,至少在性能上会比setState好很多。
当然简单的一次动画也可以通过layoutAnimation
来实现
在处理Animated
动画时,一个典型的解决方案就是暂时停止所有的同步任务处理,等到动画执行完成之后再同步或者一步执行任务处理。把大量同步的任务拆成多个异步过程处理。
基本的思路就是保证每秒60帧的动画循环。但是在有复杂业务逻辑时这样处理会导致响应用户操作速度变慢,影响用户体验。如果Facebook用独立线程来进行动画渲染。那就没有这个问题了。
以上的优化思路都是基于javascript的要从根本上解决问题,就要让动画过程脱离javascript。所以需要用原生组件来实现动画过程,这样可以充分利用机器性能,可以使用GPU进行动画渲染。