看見這個問題我比較感興趣,就不請自來了,因為我用react兩年了,也遇到過一些動畫的開發,我就談談我自己的經驗。
首先,react最大的優勢在於對操作dom效能的提升,它透過一系列的diff演算法將對dom的操作次數降到最低,本質上是框架代替開發者去操作dom,開發者透過state和props去傳遞指令,當然開發者也可以直接操作dom,這種方式不推薦!
其次,對於開發動畫,我們有如下幾種方式:
1、透過css3開發動畫,其中animation和transition是控制動畫的核心。我們一般會開發好動畫class,在特定的時機增刪class(在react中可以用state控制),達到動畫的效果!它比較簡單,順暢,效能好,但是對動畫的控制不夠精細,能實現的動畫比較有限而且存在相容性問題!
2、透過js開發動畫,通常的思路是使用定時器,比如setTimeout、setInterval、requestAnimationFrame,可以在react的各個鉤子函式中開發,它們對動畫的控制比較精細,但是如果你使用原生的js去開發也會存在相容性問題而且效能不好,有可能會出現卡頓等現象!
3、使用react自帶外掛react-transition-group
4、使用第三方動畫庫,如react-motion ,Animated,velocity-react等
總結,個人認為簡單的動畫儘量自己使用css3和js開發(前提是保證相容性),相對於動畫庫,自己寫的程式碼要少很多,頁面整體的載入速度會快一點!如果遇到複雜的自己實現困難的動畫可以使用優秀的第三方庫,如果在使用第三方庫時能夠做到按需載入那就更好了,有時沒辦法我會自己去分離程式碼庫!
看見這個問題我比較感興趣,就不請自來了,因為我用react兩年了,也遇到過一些動畫的開發,我就談談我自己的經驗。
首先,react最大的優勢在於對操作dom效能的提升,它透過一系列的diff演算法將對dom的操作次數降到最低,本質上是框架代替開發者去操作dom,開發者透過state和props去傳遞指令,當然開發者也可以直接操作dom,這種方式不推薦!
其次,對於開發動畫,我們有如下幾種方式:
1、透過css3開發動畫,其中animation和transition是控制動畫的核心。我們一般會開發好動畫class,在特定的時機增刪class(在react中可以用state控制),達到動畫的效果!它比較簡單,順暢,效能好,但是對動畫的控制不夠精細,能實現的動畫比較有限而且存在相容性問題!
2、透過js開發動畫,通常的思路是使用定時器,比如setTimeout、setInterval、requestAnimationFrame,可以在react的各個鉤子函式中開發,它們對動畫的控制比較精細,但是如果你使用原生的js去開發也會存在相容性問題而且效能不好,有可能會出現卡頓等現象!
3、使用react自帶外掛react-transition-group
4、使用第三方動畫庫,如react-motion ,Animated,velocity-react等
總結,個人認為簡單的動畫儘量自己使用css3和js開發(前提是保證相容性),相對於動畫庫,自己寫的程式碼要少很多,頁面整體的載入速度會快一點!如果遇到複雜的自己實現困難的動畫可以使用優秀的第三方庫,如果在使用第三方庫時能夠做到按需載入那就更好了,有時沒辦法我會自己去分離程式碼庫!