1、聲明式開發html
與原生DOM、JQuery等命令式編程不一樣編程
不經過指令來控制視圖變化,是面向數據的編程框架
經過控制數據,改動數據的方式控制視圖的變化,DOM的部分React會幫你自動構建dom
2、能夠與其餘框架並存函數式編程
`ReactDOM.render(<TodoList />, document.getElementById('root'));`函數
如上,React只控制index.html中id=root部分dom的渲染,其餘部分不做控制組件化
可被兼容到其餘框架中(只要其餘框架不影響它)測試
3、組件化調試
每個ReactJS文件都是一個組件,含視圖、邏輯操做、數據htm
組件能夠被嵌套到其餘組件之中
注意組件聲明須要首字母大寫,如`<TodoList />`
4、單向數據流
子組件對於父組件傳遞過來的數據是【只讀】的
子組件直接不可修改父組件中的數據,只能經過調用父組件傳遞過來的方法,來間接修改父組件的數據
造成了單向清晰的數據流
防止了當一個父組件的變量被傳遞到多個子組件中時,一旦該變量被修改,全部傳遞到子組件的變量都會被修改的問題
這樣出現bug調試會比較困難,由於不清楚究竟是哪一個子組件改的
把對父組件的bug調試控制在父組件之中
5、視圖層框架
React框架只負責視圖層部分的實現,以及父子組件之間簡單的通訊
涉及到複雜的跨組件通訊,須要藉助Redux等數據層框架實現
這樣爲搭建小項目提供了簡易性,爲搭建大項目提供了靈活性
6、函數式編程
每一個功能都是一個小函數,函數大了還能夠繼續拆分,維護起來比較容易
提升了代碼可讀性,爲後續自動化測試提供了便利